Blazored/TextEditor

fixed Cannot read property 'root' of undefined @ OnAfterRenderAsync

git-net opened this issue · 6 comments

i found sometimes QuillFunctions.loadQuillHTMLContent called before createQuill,then throw error Cannot read property 'root' of undefined.
i try add parameter @ BlazoredTextEditor.razor
[Parameter] public string HtmlContent { get; set; }

and change OnAfterRenderAsync @ BlazoredTextEditor.razor

if (firstRender)
        {
            await Interop.CreateQuill(
                JSRuntime,
                QuillElement,
                ToolBar,
                ReadOnly,
                Placeholder,
                Theme,
                DebugLevel);
            if (HtmlContent != null)
            {
               await this.LoadHTMLContent(HtmlContent);
            }
        }

@ myComp.razor

 <Blazored.TextEditor.BlazoredTextEditor
                                         HtmlContent="@xxx.Content"                               
                                                                        @ref="richText">...

its works fine。

What version of .Net Core are you using?
Do you get this error when you run the sample code in this GitHub repo?

Thank You

I tested this in both .Net Core 3.1 and .Net Core 5.0 and I can't reproduce this error. Can I see the code that sets HtmlContent . From what I can tell this just should not be needed. Thanks!

netcore 3.1.
e,my english is poor.
i means i resolved "Cannot read property 'root' of undefined." by add HtmlContent ,

before my.razor

....
<BlazoredTextEditor....  @ref="textEditor" />
....
protected override async Task OnAfterRenderAsync(bool firstrender) {
   .....
  await textEditor.LoadHTMLContent(....) // throw 
}

after: add HtmlContent and remove textEditor.LoadHTMLContent(....)

<BlazoredTextEditor.... @ref="textEditor" HtmlContent="sssss" />

when i debug in browser i found 'loadQuillHTMLContent called before createQuill' sometimes

If you are trying to load HTML content when the page first loads use:

    <EditorContent>
        @((MarkupString)@QuillReadOnlyContent)
    </EditorContent>

See: https://github.com/Blazored/TextEditor/blob/main/samples/BlazorServerSide/Pages/Index.razor

Only use:

await this.QuillHtml.LoadHTMLContent(QuillContent);

On an event like a button click.

Thanks!!