【问题标题】:Is it safe to use ones of component without eventEmitter in the parent component?在父组件中使用没有 eventEmitter 的组件是否安全?
【发布时间】:2019-10-03 13:22:53
【问题描述】:

我正在使用 eventEmitter(来自孩子)来通知父母一些事件。我有不止一个组件,但是......并非所有组件都需要使用方法调用。如果它只是静态的,它是否是一种通知父组件不应该发射的方法?在没有任何事件的情况下使用 emit 是否安全?

我有一个使用 9x 的父级,但其中只有 2 个为过滤器设置标准并导航到另一个组件。

All of 有一个 Output() 发射器,用于在 html 中发射一个空事件。在父组件中,我有设置标准和导航的方法,我将其用作输出。

这很好用,但我想知道它是否会在将来产生问题,或者它是否不安全。下面我会写一个示例代码。

child.component.ts

Output() emitter = new EventEmitter();

child.component.ts

    <button (click)="emitter.emit()"
        class="btn btn-primary"> example text
    </button>

parent.component.ts

    public onGetOnlineDevices() {
        this.deviceState.setCriteriaWithReset({ isOnline: true });
        this.navigate();
    }

parent.component.ts

            <div class="col-xl-6">
                <child-component
                (emitter)="onGetOnlineDevices($event)"
                ></child-component>
            </div>
            <div class="col-xl-6">
                <child-component></child-component>
            </div>
            <div class="col-xl-6">
                <child-component></child-component>
            </div>

只有第一个子组件会设置标准和导航,但我不确定在没有任何方法的情况下离开另一个组件是否安全。 谢谢你的回答。

【问题讨论】:

    标签: angular components output eventemitter


    【解决方案1】:

    这是安全的,因为它们不会消耗事件发射器发出的内容。

    我认为您需要做的是创建单独的组件。发射的子组件应该是一种类型的组件,而不发射的子组件应该是不同类型的组件,因为它们似乎有不同的用途。如果它们确实有很多共同点,请在它们之间创建一个基类以共享功能。

    这将是实现干净代码的方法。

    【讨论】:

    • 感谢您的回答。组件是相同的,只是一些是设置标准,而其他则不是。也许将来我会对所有组件使用过滤,但现在由于后端站点而无法实现。我不想克隆组件 :) 再次感谢,祝你有美好的一天 :)
    猜你喜欢
    • 1970-01-01
    • 2010-10-04
    • 2019-04-28
    • 1970-01-01
    • 2017-07-14
    • 2020-05-13
    • 1970-01-01
    • 2018-03-11
    • 1970-01-01
    相关资源
    最近更新 更多