ngOnChanges не работает для angular экземпляра портала компонента CDK - PullRequest
1 голос
/ 13 июля 2020

Я использую angular cdk ovelay для открытия диалога.

Вот код

openDialog(component: any, dialogConfig: DialogConfig): any {
    const config = new OverlayConfig();
    config.height = dialogConfig.height;
    config.width = dialogConfig.width;
    config.positionStrategy = this.overlay.position().global().centerHorizontally().centerVertically();
    config.hasBackdrop = true;
    config.backdropClass = dialogConfig.backdropClass;

    const componentOverlayRef = this.overlay.create(config);
    const componentPortal = new ComponentPortal(component);
    const componentRef = componentOverlayRef.attach(componentPortal);

    componentOverlayRef.backdropClick().subscribe(() => {
        componentOverlayRef.dispose();
    });
    return componentRef;
}

И вот как я его использую

const _dialogConfig = new DialogConfig({
        backdropClass: "dialog-backdrop"
    });

const _componentRef: any = this.openDialog(MyComponent, _dialogConfig);
const _componentInstanceRef: MyComponent= _componentRef.instance;
_componentInstanceRef.id= 10;
_componentRef.changeDetectorRef.detectChanges();

В моем компоненте id - это @Input, и я использую ngOnChanges для прослушивания изменений в id.

Но ngOnChanges не вызывается даже после того, как я использовал

_componentRef.changeDetectorRef.detectChanges();

what в чем проблема? Или как-нибудь иначе?

...