错误属性未定义,但是有一个未定义的检查

时间:2019-12-08 21:19:29

标签: javascript angular angular-material observable

我尝试选择参与者框。这样,用户便可以将数据发送给一个或多个参与者。在用户选择了一些参与者之后,该用户将被从uguglar材料重定向到“模型”对话框。

所以我有这个:


export class EcheqSelectorComponent implements OnInit, OnDestroy {
  private subscriptions = new Subscription();
  echeqs: EcheqFamilyInfo[] = [];
  allEcheqs: EcheqFamilyInfo[] = [];
  echeqFamily: EcheqFamilyInfo;
  searchInput = '';
  filtering = false;
  participantInfo: ParticipantInfoDTO;
  echeqsToSend: EcheqFamilyInfo[] = [];
  echeqSubmissionBatchDTO: EcheqSubmissionBatchDTO;
  participantIds$: Observable<string[]>;
  patientId: string;

  public participantIds: string[] = [];
  public participantIdsFromRoute: string[] = [];

  constructor(
    private apiService: EcheqDefinitionService,
    private dialog: MatDialogRef<EcheqSelectorComponent>,
    public selectedParticipantService: SelectedParticipantsService,
    private submissionService: EcheqSubmissionMedicalService,
    private snackBar: MatSnackBar,

    @Inject(MAT_DIALOG_DATA) public data: any,
    public dialogRef: MatDialogRef<EcheqSelectorComponent>
  ) {
    this.participantInfo = data.participant;
    this.participantIdsFromRoute = this.data.participant.participantId ? [this.data.participant.participantId] : undefined;
  }

  ngOnInit() {
    this.subscriptions.add(
      this.apiService.listEcheqFamilies().subscribe(families => {
        this.echeqs = families;
        this.allEcheqs = families;
      })
    );
}

matdialog服务如下所示:

export class DialogModelService {
  participant: ParticipantInfoDTO;

  constructor(private dialog: MatDialog, route: ActivatedRoute) {
    this.participant = route.snapshot.data['participant'];

    console.log('Route:', this.participant);
  }

  openEcheqSelectorDialog(participant: ParticipantInfoDTO): Observable<any> {
  const dialogRef =     this.dialog.open(EcheqSelectorComponent, {
      width: '600px',
      maxHeight: 'calc(100vh - 2em)',
      data: {
        participant:  participant
      }
    });

    return dialogRef.afterClosed();
  }

  openSchemaSelectorDialog(participantId: string): Observable<any> {
   const dialogRef =   this.dialog.open(SchemaSendDialogComponent, {
      width: '600px',
      maxHeight: 'calc(100vh - 2em)',
      data: {
        participant: participantId
      }
    });

    return dialogRef.afterClosed();
  }
}

但是在我选择了一些参与者并触发了发送的事件之后,我在这一行收到了一个错误:

this.participantIdsFromRoute = this.data.participant.participantId ? [this.data.participant.participantId] : undefined;
  }

说:

EcheqSelectorComponent_Host.ngfactory.js? [sm]:1 ERROR TypeError: Cannot read property 'participantId' of undefined
    at new EcheqSelectorComponent (echeq-selector.component.ts:50)
    at createClass (core.js:18681)
    at createDirectiveInstance (core.js:18550)
    at createViewNodes (core.js:19776)
    at createRootView (core.js:19690)
    at callWithDebugContext (core.js:20722)
    at Object.debugCreateRootView [as createRootView] (core.js:20208)
    at ComponentFactory_.push../node_modules/@angular/core/fesm5/core.js.ComponentFactory_.create (core.js:18029)
    at ComponentFactoryBoundToModule.push../node_modules/@angular/core/fesm5/core.js.ComponentFactoryBoundToModule.create (core.js:7812)
    at ViewContainerRef_.push../node_modules/@angular/core/fesm5/core.js.ViewContainerRef_.createComponent (core.js:18140)

那我该怎么解决?

谢谢

0 个答案:

没有答案