#angular #router
#angular #маршрутизатор
Вопрос:
у меня есть 3 компонента, которые являются app.component, body.component, detail, component. когда я в detailcomponet нажимаю кнопку, я хочу, чтобы имя входа в app.component было равно имени входа в detailcomponet. я использую общий доступ к данным службы для связи двух компонентов, я мог бы передавать данные в службу, но appcompont не смог бы повлиять. приложение и компонент detail
сервис, маршрутизатор и основной компонент
Комментарии:
1. Используйте общую службу для обмена данными между компонентами, которые не являются прямыми родительскими и дочерними компонентами или братьями и сестрами. angular.io/docs/ts/latest/cookbook/component-communication.html
2. я просто модифицирую код, используя общий сервис этим методом, я мог бы передавать данные в службу, консоль. журнал подтверждает это. но не смог повлиять на компонент приложения. может быть, у вас есть время, чтобы это увидеть. я вставляю над этим две картинки . большое тебе спасибо, конструктор приложения:constructor(private psservice: Passservice){ psservice.passdata $.subscribe( shardata =>{ this.loginname=shardata; //this.loginname=’хаха» $ {shardata}»привет»; //console.log(shardata); });
3. Если вы добавите службу к каждому компоненту, то каждый компонент получит отдельный экземпляр службы. Либо добавьте его к поставщикам компонента, который является родительским для обоих, либо добавьте к поставщикам
@NgModule()
, тогда один экземпляр службы будет доступен всему приложению.4. я использую поставщиков модулей приложений, добавляющих эту службу вместо другого компонента. это сработало хорошо, очень помогло мне, большое вам спасибо.
Ответ №1:
Если вы добавите службу к каждому компоненту, то каждый компонент получит отдельный экземпляр службы. Либо добавьте его к поставщикам компонента, который является родительским для обоих, либо добавьте к поставщикам @NgModule(), тогда один экземпляр службы будет доступен всему приложению.