【问题标题】:Angular 8 @output EventEmitter not letting an Object to be emittedAngular 8 @output EventEmitter 不允许发出对象
【发布时间】:2020-02-18 00:36:15
【问题描述】:

如何发出对象而不是原始数据类型?

我有一个对象const amount = { currenty: 'USD', total: '10.25' }; 我想将其发送给父组件。

export class MyChildComponent implements OnInit {
     @Output() childEventEmitter: EventEmitter = new EventEmitter();
....
}

在发射器函数中

this.childEventEmitter.emit(amount); // 不工作

错误:类型的参数 { currenty: 'USD', total: '10.25' } 不能分配给字符串类型的参数

【问题讨论】:

  • 可以添加父组件代码吗?请添加 .html 和 .ts 代码。

标签: angular typescript angular-material


【解决方案1】:

在找到此解决方案"Type 'EventEmitter' is not generic" ERROR in angular后,我正在回答我自己的问题

问题是我从 Protractor 导入 EventEmitter 而不是 @angular/core; 感谢所有的cmets。

【讨论】:

    【解决方案2】:
    @Output() childEventEmitter: EventEmitter<{currenty: string, total: string}> = new EventEmitter<{currenty: string, total: string}>();
    

    【讨论】:

    • 这里不需要打字。由初始化推断
    • 你的意思是这样@Output() childEventEmitter = new EventEmitter&lt;{currenty: string, total: string}&gt;();
    • 是的。类型声明只是额外的。只需输入发射器
    【解决方案3】:

    那是因为 Typescript 抱怨类型不兼容。 要么使用

    @Output() childEventEmitter = new EventEmitter<{currenty: string, total: string}>();
    

    @Output() childEventEmitter = new EventEmitter<any>();
    

    【讨论】:

      【解决方案4】:

      通过事件传递任何类型的参数的简单方法。

      @Output() childEventEmitter: EventEmitter<any> = new EventEmitter<any>();
      

      【讨论】:

        猜你喜欢
        • 2018-11-17
        • 1970-01-01
        • 2018-12-25
        • 1970-01-01
        • 2020-12-04
        • 2021-11-16
        • 1970-01-01
        • 2018-08-17
        • 1970-01-01
        相关资源
        最近更新 更多