ダイアログで作成されたコンポーネントインスタンスを破棄する適切な方法はありますか? iはdialog-コンポーネントインスタンスを近接して配置されていない。角材破棄ダイアログインスタンス
import { Component, OnInit, Input, Output, EventEmitter, Inject } from '@angular/core';
import { MdDialog, MdDialogRef, MD_DIALOG_DATA } from '@angular/material';
@Component({
selector: 'basket',
templateUrl: './basket.component.html',
styleUrls: ['./basket.component.css']
})
export class BasketComponent implements OnInit {
@Input() Product: any;
}
@Component({
selector: 'basket-dialog',
template: '<div><basket [Product]="Product"></basket></div>'
})
export class BasketDialogComponent implements OnInit {
Product: any;
constructor(public dialogRef: MdDialogRef<BasketComponent>,
@Inject(MD_DIALOG_DATA) public productData: any) { }
ngOnInit() {
this.Product = this.productData;
this.say();
}
say() {
setTimeout(() => this.say(), 1000);
console.log('test');
}
}
ダイアログの作成:
let ordersDialog = this.dialog.open(BasketDialogComponent, {
data: product
});
ordersDialog.afterClosed().subscribe(x => {
// something like: orderDialog.componentInstance.dispose();
});
say()
方法はまだダイアログを閉じた後でも実行されています。
はい、タイムアウトのある実際の実装は誤解を招きました。角度のついたダイアログが閉じられた直後にコンポーネントが破棄されます。私の場合は、コンポーネントが破棄されたときに、オブザーバブルからの登録を解除するだけでした。 – Brivvirs