Angular Kentico cloud:在richTextResolver中添加角度html时出现问题
我正在尝试渲染kentico云中RichTextField内部的结构。在本教程之后,我制作了一个ContentType并用作我的Angular Kentico cloud:在richTextResolver中添加角度html时出现问题,angular,typescript,kentico-kontent,Angular,Typescript,Kentico Kontent,我正在尝试渲染kentico云中RichTextField内部的结构。在本教程之后,我制作了一个ContentType并用作我的AngularLink(它有两个属性,文本和链接),然后定义了一个类型解析程序并在DeliveryClient中注册 new DeliveryClient({ projectId: 'xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx', typeResolvers: [ new TypeResolver('lan
AngularLink
(它有两个属性,文本和链接),然后定义了一个类型解析程序并在DeliveryClient中注册
new DeliveryClient({
projectId: 'xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx',
typeResolvers: [
new TypeResolver('landing_page', () => new LandingPage()),
new TypeResolver('angular_link', () => new AngularLink())
],
});
AngularLink
类提供richTextResolver
export class AngularLink extends ContentItem {
text: Fields.TextField;
link: Fields.TextField;
constructor() {
super({
richTextResolver: (item: AngularLink) => {
return `<a routerLink="${item.link.value}">${item.text.value}</a>`;
}
});
}
}
导出类AngularLink扩展ContentItem{
text:Fields.TextField;
链接:Fields.TextField;
构造函数(){
超级({
richTextResolver:(项目:AngularLink)=>{
返回`${item.text.value}`;
}
});
}
}
问题是,当我使用RichTextField中的getHtml()
方法解析html时,BrowserRichTextParser
通过innerHTML在元素中插入返回的字符串,最终结果是带有属性routerlink
的锚定标记
有没有更好的策略使角度属性在kentico cloud delivery api的标准fow中工作
提前非常感谢 这是个好问题,但不容易解决。本质上,您面临的问题是,从
getHtml
方法得到的只是一个string
,当您通过innerHtml
呈现它时,angular将其视为html,但它无法解析html中的指令/组件
将来Angular的innerHtml
指令可能会尝试实例化和解析指令/组件,但目前情况并非如此。考虑到组件、生命周期和DI的复杂性,我认为这不会在不久的将来实现。新的常春藤
渲染器可能会在某个时候为这一点提供路径
要实现您的要求,您需要指示angular动态创建组件/指令-angular对此提供支持
以下是一些可能对您有用的资源:
ContentItem richTextFields
及其子代调用某处richTextResolver
,并将结果放在带有innerHTML的HtmleElement中,这会错误地在解析的元素中创建属性routerlink,所有内容都是小写的。这是函数innerHTML
的一个限制,因为在html中属性应该不区分大小写,但不区分大小写。我不太清楚您的意思,richTextResolver
的输出总是一个字符串,恰好是一个html。通过在特定的RichTextField
(或者RichTextElement
上调用getHtml
(或者根据版本再次调用RichTextElement
)来获取此字符串。您能否举例说明richTextResolver
的输出是什么以及应该是什么?