Вы можете использовать субъект поведения, чтобы сделать это.
service.ts
import { Injectable } from '@angular/core';
import { BehaviorSubject } from 'rxjs';
@Injectable()
export class DataService {
private messageSource = new BehaviorSubject('0');
currentMessage = this.messageSource.asObservable();
constructor() { }
changeNotification(number) {
this.messageSource.next(number)
}
}
parent.component.ts (Компонент уведомлений в вашем случае)
import { Component, OnInit } from '@angular/core';
import { DataService } from "../data.service";
@Component({
selector: 'app-parent',
template: `
{{message}}
`,
styleUrls: ['./sibling.component.css']
})
export class ParentComponent implements OnInit {
message:string;
constructor(private data: DataService) { }
ngOnInit() {
this.data.changeNotification.subscribe(number => this.number = number)
}
}
Когда происходит сбой, вы можете нажать на тему поведения, как,
constructor(private data: DataService) { }
onFailure() {
this.data.changeNotification("1")
}
У вас может быть номер на уровне обслуживания, и вы можете увеличивать его при сбое и нажимать на него или как хотите.
Для меня это был мой опыт ...
У меня был моменты, когда я хотел бы, чтобы схемы могли делать больше по принципу проверки бизнес-правил. Однако, по моему опыту, существует схема для определения контракта данных (формат, типы и т. Д.) ... НЕ для обеспечения соблюдения бизнес-правил. Попытка сделать что-то большее, чем это, наталкивается на всевозможные проблемы, и, возможно, именно поэтому Schematron, похоже, утратил свою популярность (возможно, ошибочное предположение, что я не могу сделать резервную копию).
Чтобы обойти это, обычно можно использовать двухпроходный подход:
Я понимаю, если вы мы хотим использовать комплексный подход к проверке, но попытка использовать схему для этого вызывает больше головных болей в долгосрочной перспективе. В конце концов вы получите более точный контроль над проверкой бизнес-правил, изолировав код.