Angular 角度-如何将单击事件处理程序添加到动态添加的内容
我需要在angular(而不是angular js)中动态填充内容。 动态内容将包含链接,我需要找到点击的链接,从点击的链接中提取一些属性值,并将其用于处理。Angular似乎不支持这一点 让我展示一下动态消息将包含的内容 组件模板片段如下所示Angular 角度-如何将单击事件处理程序添加到动态添加的内容,angular,Angular,我需要在angular(而不是angular js)中动态填充内容。 动态内容将包含链接,我需要找到点击的链接,从点击的链接中提取一些属性值,并将其用于处理。Angular似乎不支持这一点 让我展示一下动态消息将包含的内容 组件模板片段如下所示 <div [innerHTML]="some_html_content"></div> 一些html内容将包含如下值 some_html_content = 'please make you selection <
<div [innerHTML]="some_html_content"></div>
一些html内容将包含如下值
some_html_content = 'please make you selection <a onClik="navigate()" some-prop="somevalue-1">Click Link 1 </a>
<a onClik="navigate()" some-prop="somevalue-2">Click Link 2 </a>';
some_html_content='请点击链接1进行选择
点击链接2';
请帮助我找到一个适用于angular的解决方案。出于安全考虑,angular不处理由
[innerHTML]
添加的HTML。这意味着innerHTML
内容不会响应事件
使用*ngFor
尽管innerHTML
不起作用,但您仍然可以使用*ngFor
动态插入响应单击
事件的HTML
示例组件
关于DomSanitizer的脚注(警告:这不起作用。) 可以使用Angular
DomSanitizer
通过innerHTML
添加原始HTML,但是,它不会执行(单击)
事件处理程序
public html_links: SafeHtml;
public constructor(private router: Router, private sanitizer: DomSanitizer) { }
ngOnInit() {
// DOES NOT WORK
const some_html_content = `Please make your selection<br/><a (click)="navigate()">Link 1</a>
<br/><a (click)="navigate()">Link 2</a>`;
this.html_links = this.sanitizer.bypassSecurityTrustHtml(some_html_content);
}
public html\u链接:SafeHtml;
公共构造函数(专用路由器:路由器,专用消毒器:DOMSANTIZER){}
恩戈尼尼特(){
//不起作用
const some_html_content=`请选择链接1
链接2`;
this.html\u links=this.sanitizer.bypassSecurityTrustHtml(某些内容);
}
模板
出于安全考虑,Angular不处理
[innerHTML]
添加的HTML。这意味着innerHTML
内容不会响应事件
使用*ngFor
尽管innerHTML
不起作用,但您仍然可以使用*ngFor
动态插入响应单击
事件的HTML
示例组件
关于DomSanitizer的脚注(警告:这不起作用。) 可以使用Angular
DomSanitizer
通过innerHTML
添加原始HTML,但是,它不会执行(单击)
事件处理程序
public html_links: SafeHtml;
public constructor(private router: Router, private sanitizer: DomSanitizer) { }
ngOnInit() {
// DOES NOT WORK
const some_html_content = `Please make your selection<br/><a (click)="navigate()">Link 1</a>
<br/><a (click)="navigate()">Link 2</a>`;
this.html_links = this.sanitizer.bypassSecurityTrustHtml(some_html_content);
}
public html\u链接:SafeHtml;
公共构造函数(专用路由器:路由器,专用消毒器:DOMSANTIZER){}
恩戈尼尼特(){
//不起作用
const some_html_content=`请选择链接1
链接2`;
this.html\u links=this.sanitizer.bypassSecurityTrustHtml(某些内容);
}
模板
如果其角度为2+,请使用(单击)
事件侦听器。而不是onClik使用(单击)并尝试使用渲染器2服务。但这通常是一个糟糕的主意,并表明您的方法不是很有角度性。如果角度为2+,请使用(单击)
事件侦听器。而不是onClik使用(单击)并尝试它,您可以使用renderer2服务执行此操作。但这通常是一个坏主意,并表明你的方法不是很有角度
public html_links: SafeHtml;
public constructor(private router: Router, private sanitizer: DomSanitizer) { }
ngOnInit() {
// DOES NOT WORK
const some_html_content = `Please make your selection<br/><a (click)="navigate()">Link 1</a>
<br/><a (click)="navigate()">Link 2</a>`;
this.html_links = this.sanitizer.bypassSecurityTrustHtml(some_html_content);
}
<div [innerHTML]="html_links"></div>