我面临以下(显然很简单(的情况:
@Component({
selector: 'my-component',
template: `
<p>{{text}}</p>
`,
})
export class MyComponent implements OnInit {
public text: string;
constructor(
private route: ActivatedRoute,
private apiService: ApiService
) {}
@Input() id: number;
ngOnInit() {
this.route.params.subscribe(params => {
this.text = this.apiService.getText(id);
});
}
}
变量text
来自CMS,可以包含手动编写的routerLink
实例(实际上是扩展routerLink
的自定义指令(。
当调用ngOnInit
时,是否有任何非黑客方法可以使这些指令编译?它必须与 AOT 合作。欢迎任何解决方法建议。
请注意,父组件位于"resolve"下,因此this.route.params.subscribe
在被调用后将始终立即发出一个值。
谢谢!
我没有足够的影响力来评论,我并不是要陈述显而易见的事情,但是既然您将Angular 5与AoT一起使用,您是否看过Angular Universal?
我建议您在CMS中使用常规<a href>
而不是<a routerLink>
,然后解析<a href>
以正确路由。这也将您的CMS与Angular应用程序分开。
我已经写了这篇文章,关于如何使用指令做到这一点:
Angular 2 是否可以解析从外部 CMS 接收的链接以解析为内部
该解决方案使用的窗口和文档不适用于AOT,但这些功能很容易重写。