Angular 在“单击”和“函数()”操作的传单后打开“角度材质”对话框
我想在单击传单圆时打开一个“角度材质”对话框。 对话框出现,但行为异常。当我用普通按钮(单击)事件打开对话框时,这种奇怪的行为不会出现 我尝试这样调用函数。我将onClickCircles函数绑定到我的圆Angular 在“单击”和“函数()”操作的传单后打开“角度材质”对话框,angular,angular-material,leaflet,ngx-leaflet,Angular,Angular Material,Leaflet,Ngx Leaflet,我想在单击传单圆时打开一个“角度材质”对话框。 对话框出现,但行为异常。当我用普通按钮(单击)事件打开对话框时,这种奇怪的行为不会出现 我尝试这样调用函数。我将onClickCircles函数绑定到我的圆 let line = L.circle(latlngEx, { radius: this.circles[i].radius }).on( "click", this.onClickCircles.bind(this) ); 当按下圆
let line = L.circle(latlngEx, { radius: this.circles[i].radius }).on(
"click",
this.onClickCircles.bind(this)
);
当按下圆圈时,我打开对话框
onClickCircles(e) {
const dialogRef = this.dialog.open(MarkerdetailComponent, {
width: "300px",
data: { event: e, collection: "circles" }
});
dialogRef.afterClosed().subscribe(result => {
console.log("closed")
});
//this.deleteCircles(e.target);
}
当从其他任何地方调用onClickCircle(e)时,它工作正常。我猜是因为.bind(这个)再次实例化了我的组件,它必须在对话框显示正确之前加载整个组件。但我不确定这一点,也不知道是否有解决办法。之所以发生此错误,是因为单击函数中的代码没有在角度上下文中执行。可以使用NgZone进行固定
let line = L.circle(latlngEx, { radius: this.circles[i].radius }).on(
"click",
e => {
this.zone.run(() => {
this.onClickCircles(e)
})
}
);
发生此错误是因为click函数中的代码未在角度上下文中执行。可以使用NgZone进行固定
let line = L.circle(latlngEx, { radius: this.circles[i].radius }).on(
"click",
e => {
this.zone.run(() => {
this.onClickCircles(e)
})
}
);
当1)模块未正确加载或2)发生运行时错误(通常是由于在尝试设置样式之前未呈现DOM)时,通常会发生类似的情况。很多时候,可以通过将OnInit项设置为AfterViewInit来修复此问题。除非您能够提供StackBlitz,否则很难精确指出超出此范围的确切错误。当1)模块未正确加载或2)发生运行时错误(通常是由于在尝试设置样式之前未呈现DOM)时,通常会发生此类情况。很多时候,可以通过将OnInit项设置为AfterViewInit来修复此问题。除非你能提供一个StackBlitz,否则很难精确地指出超出此范围的确切错误。