@Injectable()
export class UserService {
isAuthenticated$ = new ReplaySubject(1);
constructor(private http: HttpClient) { }
getUser() {
return this.http.get('/server/api/userService').pipe(
tap(data => this.isAuthenticated$.next(!!data['login'])),
);
}
}
export class HeaderComponent implements OnInit {
user$: Observable<User>;
isAuthenticated$: Observable<boolean>;
constructor(private userService: UserService) { }
ngOnInit() {
this.user$ = this.userService.getUser();
this.isAuthenticated$ = this.userService.isAuthenticated$;
}
}
Смею предположить, что во время выполнения конструкции . . . new Dev( . . . ) интерпритатор ещё не знает про объект c?
c
объявлена, но не проинициализирована, и ее значение undefined
function Dev
у вас в том же скоупе, то c
попадает в нее через замыкание. <span>{{ getAddressByCode(addressCode) | async }}</span>
существует ли возможность в ангуляре вызывать нормальные async методы, а не только RxJs?
this
у вас в данном случае указывает на глобальный объект.Quest
с new
, то this
будет указывать на новосозданный объект и Quest
будет для него конструктором, тогда answers добавятся в прототип этого объекта.this.prototype.answers
все равно не сработает, т.к. prototype
это свойство функции в котором хранится ссылка на объект который станет прототипом для всех объектов созданных этой функцией как конструктором.this.answers
@Injectable({
providedIn: 'root'
})
class UserService {
private user$;
constructor(private http: HttpClient) {}
fetchUser(): Observable<User> {
if (!this.user$) {
this.user$ = this.http.get('/server/api/userService').pipe(shareReplay(1))
}
return this.user$;
}
}
constructor(
private router: Router,
) {
this.router.routeReuseStrategy.shouldReuseRoute = function () {
return false;
};
this.router.events.subscribe((evt) => {
if (evt instanceof NavigationEnd) {
this.router.navigated = false;
}
});
}
export class Task1Module {
constructor(
public distance:Observable<distance>,
public convert_to:string
) {
}
}
// The logic that disposes of the overlay depends on the exit animation completing, however
// it isn't guaranteed if the parent view is destroyed while it's running. Add a fallback
// timeout which will clean everything up if the animation hasn't fired within the specified
// amount of time plus 100ms. We don't need to run this outside the NgZone, because for the
// vast majority of cases the timeout will have been cleared before it has the chance to fire.
this._closeFallbackTimeout = setTimeout(() => {
this._overlayRef.dispose();
}, event.totalTime + 100);
overlayRef.dispose()
производит отвязывание от событий клавиатуры.import { Directive } from '@angular/core';
import { NgControl } from '@angular/forms';
import { Subscription } from 'rxjs';
@Directive({
selector: '[numbers]',
})
export class NumbersDirective {
sub = new Subscription();
constructor(
private ngControl: NgControl
) { }
ngOnInit() {
this.sub = this.ngControl.valueChanges.subscribe(value => {
this.ngControl.control.setValue(
(value || '').replace(/[^0-9]*/g, ''),
{ emitEvent: false },
)
});
}
ngOnDestroy() {
this.sub.unsubscribe();
}
}