Я использую инжектор поставщика, чтобы отправить команду из компонента Signin в компонент Profile, чтобы выйти. Хотя, журналы консоли показывают мне, что функция Signout работает должным образом, директивы (HTML) * ngIf не изменяются соответствующим образом.Как два разных компонента взаимодействуют друг с другом?
Что я делаю неправильно?
**Signin component**
import {Component, OnInit, Injectable } from '@angular/core';
import {ProfileUserComponent} from '../profile.user.component/profile.user.component'
@Component({
selector: 'signin-button',
template: `<button (click)="onSignOut()" *ngIf="loggedIn === true " >Sign Out</button>
<button (click)="onSignIn()" *ngIf="loggedIn !== true " >Sign In</button>
`,
providers: [ProfileUserComponent]
})
@Injectable()
export class SigninComponent {
loggedIn: boolean;
constructor(public http: Http, private profileUserComponent: ProfileUserComponent){}
ngOnInit(): any{}
onSignOut(): void{
// send command to the profile component
this.profileUserComponent.signout(false);
}
}
**ProfileUserComponent**
import {Component, OnInit, Injectable} from '@angular/core';
@Component({
selector:'profile-user',
template: `<img class="ui mini image" src="image1.jpg" *ngIf="loggedIn === true">
<img class="ui mini image" src="image2.jpg" *ngIf="loggedIn === false">
`,
})
signout(status){
this.loggedIn = status;
console.log ("logged out", this.loggedIn); // Console log tells me that "Logged Out False"
}
}
Привет Яков. Если я правильно понял вас, правильный способ создания * ProfileUserComponent - заставить компонент прослушивать изменения? Это другое, потому что теперь в Angular2 мы используем библиотеку Rxjs? –
Если одновременно отображаются два компонента для брака, затем введите услугу и измените сервис, который запускает событие при каждой такой модификации. Если эта услуга вводится во второй компонент, она может подписаться на эти события: myCommonService.varOfTypeEventEmitter.subscribe(). Другой сценарий - с использованием маршрутизатора. Если второй компонент отображается в розетке маршрутизатора, он может подписаться на обновления от первого компонента, подписавшись на свойство params ActivatedRoute (его необходимо ввести во второй компонент). –