В моем компоненте заголовка у меня есть кнопка входа, которая регистрирует меня на стороннем веб-сайте. Приложение sc2 инициализируется в компоненте заголовка с callbackURL. В заголовке я получаю LoginURL, который используется для подключения к sc2. К loginURL я могу добавить состояние, которое в моем случае представляет собой просто строку с идентификатором текущей страницы, на которой я нахожусь, это возвращается в параметрах URL-адреса обратного вызова. Проблема в том, что заголовок никогда не обновляется состоянием, поскольку URL-адрес обратного вызова вызывает основной компонент (который загружается в маршрутизаторе-выходе). Сам заголовок загружается над основным компонентом. Я не могу заставить основной компонент перенаправить на исходный компонент. До того, как я переместил кнопку из основного компонента в компонент заголовка, все работало, теперь состояние, которое отправляется в основной компонент, не обновляется до последней страницы, поэтому я не могу перенаправить его через основной компонент на исходный . страница используется. Я попробовал messageService и использовал localStorage, но похоже, что компонент заголовка никогда не обновляется вовремя. URL-адрес обратного вызова всегда относится к основному компоненту. Могу ли я напрямую общаться с компонентом заголовка?
app.component
<app-header> </app-header>
<router-outlet> </router-outlet>
this.api = sc2.Initialize({
app: 'someName.app',
// callbackURL: 'http://localhost/main/',
callbackURL: this.callBackURL,
accessToken: this.accessToken,
scope: ['vote', 'comment']
});
this.loginUrl = this.api.getLoginURL(this.state)
page.component.ts
constructor() {
this.newStateService.setState("page")
this.newStateService.setCoinId("pageId")
this.newStateService.changeMessageCoinId(this.coinId)
const params = new HttpParams().set('_id', this.coinId);
}
Заголовок component.ts
constructor() {
this.newStateService.currentMessageState
.takeWhile(() => this.alive)
.subscribe(message => {
this.state = message
})
this.newStateService.currentMessageCoinId
.takeWhile(() => this.alive)
.subscribe(message => {
this.coinId= message
})
this.stateText = newStateService.getState();
this.coinId = newStateService.getCoinId(); }