在父组件中使用没有eventEmitter的组件是否安全?

时间:2019-05-16 09:46:07

标签: angular components output eventemitter

我正在使用eventEmitter(来自子级)来通知父级一些事件。我有多个组件,但是...并非所有人都需要使用方法调用。是否有一种方法可以通知父组件,如果组件只是静态的,则不应该发出该组件?使用没有任何事件的发射是否安全?

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

所有元素都有一个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>

只有第一个子组件会设置条件并进行导航,但是我不确定是否可以安全地保留其他组件而无需任何方法。 感谢您的回答。

1 个答案:

答案 0 :(得分:0)

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

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

这将是获得干净代码的方法。