我的 Angular 应用程序中有一个通知服务,通常你称之为
this.notificationsService.showError('My Title', 'My Message...');
我也希望能够在消息中传递应用程序链接,并且我知道我需要允许SafeHtml
输入,如下所示:
this.notificationsService.showError(
'Error!',
this.domSanitizer.bypassSecurityTrustHtml(
`Something has gone wrong, but you can go to <a routerLink="'/home/accounts-list'">home page</a> to start over.`
)
);
在我的服务中,这就是我所做的:
showError(title: string, message: string | SafeHtml): void {
const newNotification: INotification = {
title,
message,
htmlMessage: typeof message !== 'string'
};
this.notifications.push(newNotification);
}
然后我像这样展示它:
<div class="toast" *ngFor="let n of notificationsService.notificationsList">
<div class="toast-header">
<strong>{{n.title}}</strong>
</div>
<div class="toast-body" *ngIf="!n.htmlMessage">{{n.message}}</div>
<div class="toast-body" *ngIf="n.htmlMessage" [innerHTML]="n.message"></div>
</div>
所以……为了解决这个问题!这只是在某种程度上起作用,因为 HTML 得到了,但显然它没有被 angular 解析以使其具有routerLink
功能。到浏览器的实际 HTML 输出是:
<a routerlink="'/home/accounts-list'">home page</a>
但是,它不可点击,因为实际上由 angular 解析的链接会输出以下 HTML:
<a routerlink="'/home/accounts-list'" ng-reflect-router-link="/home/accounts-list" href="/home/accounts-list">home page</a>
我怎样才能让这些链接正常工作?
我是否以正确的方式解决这个问题?