Angular 6 вызывающая функция после закрытия диалога - PullRequest
0 голосов
/ 10 сентября 2018

Я пытаюсь реализовать вызов функции после закрытия диалога, но я не могу использовать канал и подписаться на него.Давайте посмотрим мой код.

я получил эту ошибку:

Type 'Observable<any>' is not assignable to type 'MatDialogRef<any, any>'.   Property '_overlayRef' is missing in type 'Observable<any>' 

Идея состоит в том, чтобы вызвать функцию this.windowScrolling.disable ();, когда закрыть диалог

@Injectable({
  providedIn: 'root'
})
export class NavegarService {
  public offsets: number[];

   windowScrolling: WindowScrollingService;

  constructor(private router: Router,
              private activatedRoute: ActivatedRoute,
              windowScrolling: WindowScrollingService,
              public dialogRef: MatDialogRef <any, any>,
              private dialog: MatDialog) {

    this.windowScrolling = windowScrolling;
    this.offsets = this.range( 1, 20 );
  }

  navegarContext(url: string, event: any = null) {
    this.router.navigate([url], {queryParams: {context: this.activatedRoute.snapshot.queryParams['context']}});
  }

  navegar(url: string, event: any = null) {
    this.router.navigate([url]);
  }

  abrirModal(component: ComponentType<any>, dados: any, event: any = null): MatDialogRef<any, any> {
    this.windowScrolling.disable();
    return this.dialog.open(component, {minWidth: '90%', disableClose: true, data: dados, position: {top: '4%'}}).afterClosed()
      .pipe(); // got error here
  }

  private range( from: number, to: number ): number[] {
    const values = [];
    for ( let i = from ; i <= to ; i++ ) {
      values.push( i );
    }
    return( values );
  }
}

1 Ответ

0 голосов
/ 10 сентября 2018

Сообщение об ошибке в значительной степени говорит о том, что именно не так: объект, который вы возвращаете из метода, имеет неправильный тип.


Чтобы это исправить, нам нужно создать и сохранить новое диалоговое окно, затем создать подписку и, наконец, вернуть только что созданный диалоговый объект.

abrirModal(component: ComponentType<any>, dados: any, event: any = null): MatDialogRef<any, any> {
    this.windowScrolling.disable();

    // Create and store dialog object
    const dialog = this.dialog.open(component, {minWidth: '90%', disableClose: true, data: dados, position: {top: '4%'}});

    // Create subscription
    dialog.afterClosed().subscribe(() => {
        // Do stuff after the dialog has closed
        this.windowScrolling.disable();
    });

    // Return dialog object
    return dialog;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...