【问题标题】:Property 'length' does not exist on type 'void' in AngularAngular中的“void”类型不存在属性“length”
【发布时间】:2022-07-06 01:10:11
【问题描述】:

我有这个子组件slide1.component.ts

import { Component, Input, OnInit, EventEmitter, Output } from '@angular/core';

@Component({
  selector: 'app-slide1',
  templateUrl: './slide1.component.html',
  styleUrls: ['./slide1.component.css'],
})
export class Slide1Component implements OnInit {
  @Input() select_option: string;
  @Output('answer') answer: EventEmitter<{
    Res: any;
    Ans: any;
  }> = new EventEmitter();
  constructor() {}

  ngOnInit() {}
  callchild() {
    var res = this.answer.emit({ Res: '', Ans: '' });
    console.log(res.length);
    console.log('child ');
  }
}

分辨率长度

得到Property 'length' does not exist on type 'void'.,但是这个在父组件中的方法返回数组,并且这个相同的函数在父方法中使用时可以工作,但是当从子组件访问时它不起作用。

工作链接: https://stackblitz.com/edit/angular-ivy-gcgxgh?file=src%2Fapp%2Fapp.component.ts,src%2Fapp%2Fslide1%2Fslide1.component.ts

【问题讨论】:

    标签: angular typescript


    【解决方案1】:

    EventEmitter.emit() 方法返回 void,因此它的返回值没有 'length' 属性。

    我建议您阅读有关 Components interaction 的文档。

    干杯

    【讨论】:

    • 您能否建议一些其他解决方案,因为我是 Angular 新手并且没有太多想法
    • 你的行应该是this.answer.emit({ Res: '', Ans: '' }); 而不是var res = this.answer.emit({ Res: '', Ans: '' });
    • @user3653474 当然,你想做什么?
    • 我想从子组件调用父方法,但它会返回子组件将使用的数组,我应该将该函数用作服务吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-27
    • 1970-01-01
    • 1970-01-01
    • 2019-12-01
    • 2019-03-18
    • 2018-08-11
    • 2021-08-05
    相关资源
    最近更新 更多