myRequest = () => request.pipe(shareReplay(1));
list = myRequest();
getById = (id) => list.pipe(map(_list => _list.find(filterById(id)))
elementId1 = getById(1);
elementId1
будет см. п. 2, а потом поиск в списке.getById(2)
будет использован тот же самый кэш.myRequest
в переменную и внутри getById
вызвать функцию myRequest
то будет создан второй "кэш" и соответственно второй запрос.getById
тоже можно закэшировать своим shareReplay
чтобы не искать второй раз, если у нас где-то будет две подписки на этот элемент. <div *ngFor="let entry of obj | keyvalue">
{{ entry.key }} {{ entry.value }}
</div>
npm i -g @angular/cli@версия
В Angular в ReactiveForm одному контролу из формы я задаю значение через .setValue(someValue)
Как я понимаю, чтобы после этого запустился процесс валидации установленного значения, нужно выполнить у этого же контрола методы markAsDirty() и markAsTouched()
Какая между ними разница и когда какой использовать?
private flagSource = new BehaviorSubject(false);
public flag: Observable<boolean> = this.flagSource;
setFlag(value: boolean) {
this.flagSource .next(value);
}
flag = this.myService.flag;
<div *ngIf="flag | async">
componentInstance
.src = new BehaviorSubject(1);
myClass = this.src.pipe(map(v => v === 1 ? 'one' : 'two'))
div [ngClass]="myClass | async"
src.next(2)
Допустим я выхожу со страницы "/home/request;id=24". После такого выхода история url-перемещений как бы удаляется, я не могу вернуться на неё путём нажатия на кнопку "назад"
Socket (на клиенте) инициализируется на нескольких страницах:
this.socket.on('server-response', data => { })
serverResponse = new Observable(observer => {
this.socket.on('server-response', data => ovserver.next(data));
return () => this.socket.removeListener('server-response');
}).pipe(share());