Тебе нужно многому научиться. Это просто ленивый пример, потому что каждый раз перезаписывается наблюдаемый. Это не идеальный код, но немного показывает, как работают Observables.
Служба оповещений:
import {
Injectable
} from '@angular/core';
import { Observable, of } from 'rxjs';
@Injectable({
providedIn: 'root'
})
export class AlertService {
alerts: Observable<any>
constructor() { }
success(message: any) {
this.alerts = of(message)
}
error(message: string) {
this.alerts = of(message)
}
}
Компонент оповещения, в котором отображается предупреждение:
export class AlertComponent implements OnInit {
dismissible = true;
// just inject service
constructor(public alerts$: AlertService) { }
ngOnInit() {
}
}
Шаблон:
<div *ngIf="alerts$ | async as alerts"> <!-- | async is an pipe it will subscribe for you. importat for observables to first be in *ngIf then in *ngFor loops-->
<ng-container *ngFor="let item of alerts">
<alert[type]="alert.type"[dismissible]="dismissible" [dismissOnTimeout]="alert.timeout"> {{ item }}</alert>
</ng-container>
</div>
Предупреждение о запуске команды в любом компоненте Вы хотите:
login() {
this.authService.login(this.model).subscribe(next => {
this.alert.success({ type: 'info', timeout: '5000', msg: "Success!"});
}, error => {
this.alert.failure({ type: 'info', timeout: '5000', msg: "Success!"}); // `this function u can delete meend failure just succes refactor to 'open'`
}, () => {
// do something else
});
}
Об услугах Вам нужно помнить, чтобы предоставить их в app.module.ts
или любом другом модуле, таком как providers: [AlertService]
Так что приложение будетзнаю, что это услуга. И вы вводите их в том месте, где Вы смотрите, по классу constructor()
. При инъекции вам необходимо всегда устанавливать для них область видимости, как «частный общедоступный или защищенный», или вы получите обычную переменную в типе или классе обслуживания.
Об наблюдаемых:
Есть бесконечные наблюдаемыеи когда вы подписываетесь на них, вам нужно отписаться, прочитайте об этом где-то в Интернете. | async
Pipe сделает это за Вас, если переменная представляет собой бесконечный цикл.