169 похожих чатов

CanActivate(Route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {

const currentChildUrl = route.url[0].path;
return this.counterpartyDetailsService.counterparty$.pipe(
map((it) => {
const counterpartyType: CounterpartyCounterparty.CounterpartyTypeEnum = 'IP';
const currentChildType = ROUTES.find((counterparty) => counterparty.link === currentChildUrl)?.counterpartyType;
return currentChildType && currentChildType === counterpartyType;
}),
);
}
написал вот такой гвард который висит на компонентах 2,3,4. они лежат внутри компонента 1, компонент 1 имеет сервис counterpartyDetailsService.
как дождаться пока значение придёт в переменную сервиса что бы вызвать canActivate? проблема в том что при f5 на компоненте 2 сначала отрабатывает гвард, потом иерархия компонент => данные не попадают в гвард

16 ответов

22 просмотра

Никак. canActivate отрабатывает, а потом пускает к компоненту

Anatoliy-Kernokus Автор вопроса
Anatoliy Kernokus
Как тогда обойти этот кейс?

В вашем кейсе сначала canActivate, а потом можно шарить данные в сервис.

Anatoliy-Kernokus Автор вопроса
Naim Shamsudinov
В вашем кейсе сначала canActivate, а потом можно ш...

Мне что бы понять можно ли пускать польщователя на компонент надо получить данные из сервиса.

Anatoliy Kernokus
Мне что бы понять можно ли пускать польщователя на...

Тогда эти методы сервиса выносите в общий сервис и проверяйте доступы. По другому никак.

Anatoliy Kernokus
Мне что бы понять можно ли пускать польщователя на...

ты можешь инджектирвоать любой сервис в гуард и вызвать что хочешь

Anatoliy-Kernokus Автор вопроса
Nillconࣩࣩ
ты можешь инджектирвоать любой сервис в гуард и вы...

Ну так если я ф5 нажму то сначала отработает гвард, потом сервис. Никаких данные соответственно в гварде от сервиса не будет

Anatoliy Kernokus
Ну так если я ф5 нажму то сначала отработает гвард...

Ну так в гуарде вызывайте метод, где проверяет доступ, а не переменную

Anatoliy-Kernokus Автор вопроса
Naim Shamsudinov
Ну так в гуарде вызывайте метод, где проверяет дос...

Там null, потому что сначала отработает гвард, потом только создадутся компоненты

Anatoliy Kernokus
Ну так если я ф5 нажму то сначала отработает гвард...

ну так сделай чтобы гард дождался данных от сервиса. там можно возвращать обс если что.

Anatoliy-Kernokus Автор вопроса
Vadim Malovaniy
ну так сделай чтобы гард дождался данных от сервис...

каким образом это сделать? я честно пытался уже несколько раз сегодня

Anatoliy Kernokus
каким образом это сделать? я честно пытался уже не...

так а данные в поток прилетают? поставь в пайп tap().

Тут вы скорее всего просто возвращаете переменную (observ), а в гуарде надо вызвать метод, после которого вы обновляете эту переменную. Если есть возможность, то создайте пример stackblitz.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта