Свойство 'custom' не существует для типа 'EventEmitter <any>' - PullRequest
0 голосов
/ 10 марта 2019

Я использую ionic 3, и у меня есть деталь компонент и запчасти страница

Parts.html page:

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

Переменная part файла parts.html - это 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);
      }
    }

Я получаю эту ошибку при создании ионного приложения:

Свойство 'parts' не существует для типа 'EventEmitter'.

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

L82: this.hasParts = true;

Свойство 'id' не существует для типа 'EventEmitter'.

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

Когда я комментирую эти строки part.ts и показываю в консоли переменную часть, я получаю представление изображения foow, где первые 2 вызова отображаются нулевыми, но после того, как он загружает значения детали:

enter image description here

Как я могу решить эту ошибку при попытке собрать приложение?

Я строю с ionic cordova run browser

Ответы [ 2 ]

1 голос
/ 10 марта 2019

В вашем примере кода неправильно несколько вещей.

1. @ Input используется для приема данных от родительского компонента, тогда как мы используем EventEmitter с декоратором @Output.Вы смешали их.

2. когда вы написали:

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

это означает, что переменная part имеет тип EventEmitter сейчас ине введите Деталь .

Чтобы заставить это работать, либо измените тип детали, как предложено @Sajeetharan, или вот так:

@input Part: IPart; // IPart is an interface which matches the structure of your data.
@Output myOutput = new EventEmitter<any>();
1 голос
/ 10 марта 2019

Попробуйте изменить строку

С

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

На

@Input() part : any;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...