类型'EventEmitter <any>'不存在属性'custom'

时间:2019-03-10 03:56:44

标签: angular asynchronous ionic3

我正在使用Ionic 3,并且有一个 part 组件和一个 parts 页面

Parts.html页面:

<ion-row> 
   <part [part]="part"></part>
</ion-row>

parts.html的 part 变量是以下json:

enter image description here

Part.ts组件:

import { Component, ViewChild, Input, EventEmitter } from "@angular/core";

export class PartComponent {
    @Input() part = new EventEmitter<any>();

    ngAfterViewInit(){
        this.setInitialValues();
    }
    ngOnChanges(){
        this.setInitialValues();
    }

    setInitialValues() {
      console.log(this.part);
      if (this.part) {

        if (this.part.hasOwnProperty('parts') && this.part.parts.length != 0) {
          this.hasParts = true;
        }
        this.getPartQuestionnaire(this.part.id);
      }
    }

我在构建离子应用程序时遇到此错误:

类型'EventEmitter'上不存在属性'parts'。

  

L81:如果(this.part.hasOwnProperty('parts')&&   this.part.parts.length!= 0){

     

L82:this.hasParts = true;

属性“ id” 在类型“ EventEmitter”上不存在。

  

L84:this.getPartQuestionnaire(this.part.id);

当我注释part.ts的这一行并在控制台中显示可变零件时,我得到了foow图像表示,其中前两个调用显示为null,但是在加载了零件值之后:

enter image description here

当我尝试构建应用程序时,如何解决此错误?

我正在与ionic cordova run browser

2 个答案:

答案 0 :(得分:1)

尝试更改行

发件人

 @Input() part = new EventEmitter<any>();

收件人

@Input() part : any;

答案 1 :(得分:1)

您的代码示例中有很多错误。

1. @ Input用于接受来自父组件的数据,而我们使用 使用@Output装饰器的EventEmitter。你把它们混合了。

2。写完之后:

@Input() part = new EventEmitter<any>();

这表示变量 part 现在的类型为 EventEmitter ,而不是 Part

要使其工作,请按照@Sajeetharan的建议更改零件的类型,或者像这样:

@input Part: IPart; // IPart is an interface which matches the structure of your data.
@Output myOutput = new EventEmitter<any>();