Angular 2: триггерная интерполяция из другого компонента не работает - PullRequest
0 голосов
/ 10 мая 2018

У меня есть два компонента, С1 и С2.Я хочу запустить интерполяцию в C2 при нажатии кнопки в C1.

Интерполированное значение определяется в C2 как открытая переменная:

public elementType: string = "test";

C2 isопределено в C1 следующим образом:

import {PropertiesComponent} from "../properties/properties.component";
constructor(private propComp: PropertiesComponent) {}
setActive(model){console.log("test");
this.propComp.elementType = "updated value";}

Журнал консоли запущен, но интерполяция - нет.

Ответы [ 2 ]

0 голосов
/ 10 мая 2018

Используйте сервисы Angular для ссылки на значения, установленные компонентом C1 внутри компонента C2. Внедрить услугу в обоих компонентах. Объявите переменную elementType в вашем сервисе. Установите переменную elementType службы в компоненте C1. Теперь вы можете получить к нему доступ в компоненте C2 через экземпляр службы.

Если вы не любите пользоваться сервисом, вам нужно перейти от C1 к C2, используя @Input() и @Output() переменные.

Как сказал @Padmapriya, вы не можете внедрить компонент как сервис. Скорее вы можете использовать компонент как дочерний компонент для обмена данными.

0 голосов
/ 10 мая 2018

Вы относитесь к компоненту как к услуге. Так добавили его в конструктор и все.

Вы можете передать elementType из C2 в C1 как @Input () elementType, и он будет соответствовать вашим ожиданиям.

В С1

@Input() elementType;
setActive(model){
console.log("test");
this.elementType = "updated value";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...