Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular Kentico cloud:在richTextResolver中添加角度html时出现问题_Angular_Typescript_Kentico Kontent - Fatal编程技术网

Angular Kentico cloud:在richTextResolver中添加角度html时出现问题

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

我正在尝试渲染kentico云中RichTextField内部的结构。在本教程之后,我制作了一个ContentType并用作我的
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对此提供支持

以下是一些可能对您有用的资源:


谢谢@Enn,但从角度看,这没有问题,已经使用动态组件实现了动态html(字符串)包含,并动态编译模板。问题是Kentico本身解决了
ContentItem richTextFields
及其子代调用某处
richTextResolver
,并将结果放在带有innerHTML的HtmleElement中,这会错误地在解析的元素中创建属性routerlink,所有内容都是小写的。这是函数
innerHTML
的一个限制,因为在html中属性应该不区分大小写,但不区分大小写。我不太清楚您的意思,
richTextResolver
的输出总是一个字符串,恰好是一个html。通过在特定的
RichTextField
(或者
RichTextElement
上调用
getHtml
(或者根据版本再次调用
RichTextElement
)来获取此字符串。您能否举例说明
richTextResolver
的输出是什么以及应该是什么?