Безопасно ли использовать компоненты без EventEmitter в родительском компоненте? - PullRequest
0 голосов
/ 16 мая 2019

Я использую eventEmitter (от ребенка), чтобы сообщить родителю о некоторых событиях.У меня есть более одного компонента, но ... не все из них должны использовать вызов метода.Это способ сообщить родителю, что компоненты не должны излучать, если он только статический?Безопасно ли использовать emit без каких-либо событий?

У меня есть родитель, где я использую 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 голосов
/ 16 мая 2019

Это безопасно, так как они не будут потреблять то, что излучает источник события.

Я думаю, что вам нужно создать отдельные компоненты. Дочерний компонент, который испускает, должен быть компонентом одного типа, в то время как дочерний компонент, который не испускает, должен быть компонентом другого типа, поскольку они, кажется, имеют различные цели. Если у них много общего, создайте между ними базовый класс для обмена функциональными возможностями.

Это был бы способ достичь чистого кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...