Я пытаюсь создать канал, который использует подписку на список (тему поведения) в отдельном сервисе (tranlationService).В настоящее время отображаемое значение является значением до заполнения списка.
При отладке в консоли подписка вызывается снова после заполнения списка, но значение в DOM не обновляется.
@Pipe({ name: 'dictionary' })
export class DictionaryPipe implements PipeTransform {
translatedValue: string = null;
constructor(private _translationService: TranslationService) {
}
translationSubscription: Subscription;
transform(value: string, defaultValue?: string): any {
this.translationSubscription = this._translationService.dictionaryItem$
.subscribe(list => {
return this.getDictionaryValue(value, defaultValue, list);
});
return this.translatedValue;
}
getDictionaryValue(key: string, defaultValue: string, list: KeyValuePair[]): any {
if (list && key) {
for (var i = 0; i < list.length; i++) {
if (list[i].key.toLowerCase().trim() == key.replace(' ', '').toLowerCase().trim()) {
if (list[i].value.length > 0)
this.translatedValue = list[i].value;
return;
}
}
}
if (defaultValue) {
this.translatedValue = defaultValue;
return;
}
this.translatedValue = ''
return this.translatedValue;
}
ngOnDestroy() {
if (this.translationSubscription) {
this.translationSubscription.unsubscribe();
}
}
}