Size: a a a

Angular - русскоговорящее сообщество

2021 March 27

V

Vladimir in Angular - русскоговорящее сообщество
Друзья, всем привет. Пишу тесты для своего компонента. В компонент инжектится router, я его мокаю через jasmine.createSpyObj. Затем у меня в ngOnInit запрашивается поле url. Его переопределить я не могу, так как оно является read-only. При попытке мокнуть через  spyOnProperty тоже ничего не происходит (url равно null). Посмотрел всё что есть в гугле, не работает. Есть какой-нибудь вариант запустить этот тест?
источник

V

VP in Angular - русскоговорящее сообщество
Oleg Safonov
Ну тогда точно сервис
Внутри subject, на который можно подписаться
И при изменении, пусть актуализирует ls
спасибо
источник

B

Bretbas in Angular - русскоговорящее сообщество
Ты там роут /admin явно прям задаешь:
[routerLink]="['/admin', 'list']"

А у меня немного не так.

Скажем у меня есть кнопка добавления при нажатии на которую должен резолвится CreateOrganizationComponent, как для этой кнопки сделать [routerLink], который не знает о родительском /organizations маршруте?
источник

B

Bretbas in Angular - русскоговорящее сообщество
Я пытался так:
[routerLink]="['.', 'create']"
и так
[routerLink]="['/', 'create']"
источник

B

Bretbas in Angular - русскоговорящее сообщество
бесполезно.
он ждет, чтобы я написал только так:
[routerLink]="['/organizations', 'create']"
источник

ФІ

Федор Ігор in Angular - русскоговорящее сообщество
напиши о так /organizations/create'
источник

B

Bretbas in Angular - русскоговорящее сообщество
Федор Ігор
напиши о так /organizations/create'
блин, мне наоборот нужно сделать, чтобы /organizations не надо было писать
источник

ФІ

Федор Ігор in Angular - русскоговорящее сообщество
Bretbas
блин, мне наоборот нужно сделать, чтобы /organizations не надо было писать
так нужен тебе новий модуль
источник

B

Bretbas in Angular - русскоговорящее сообщество
потому что это родительский сегмент, который определяется на рутовом модуле:
источник

B

Bretbas in Angular - русскоговорящее сообщество
источник

ФІ

Федор Ігор in Angular - русскоговорящее сообщество
тогда напиши просто /create
источник

ФІ

Федор Ігор in Angular - русскоговорящее сообщество
в том модуле катором нужна тебе
источник

B

Bretbas in Angular - русскоговорящее сообщество
Федор Ігор
тогда напиши просто /create
тоже не работает
источник

B

Bretbas in Angular - русскоговорящее сообщество
Error: Cannot match any routes. URL Segment: 'create'
Error: Cannot match any routes. URL Segment: 'create'
источник

OS

Oleg Safonov in Angular - русскоговорящее сообщество
Bretbas
бесполезно.
он ждет, чтобы я написал только так:
[routerLink]="['/organizations', 'create']"
Frontpage компонент ещё посмотрите в моем примере выше
источник

B

Bretbas in Angular - русскоговорящее сообщество
Oleg Safonov
Frontpage компонент ещё посмотрите в моем примере выше
посмотрел.
но это относится к admin компоненту.

Дело в том, что сегмент /organizations(аналог твоего /admin), задается в рутовом модуле, как lazy-loading для модуля OrganizationsModule
источник

B

Bretbas in Angular - русскоговорящее сообщество
а внутри OrganizationsModule уже такие роуты:
http://joxi.ru/l2Zw84GH7v6RyA
источник

B

Bretbas in Angular - русскоговорящее сообщество
И внутри OrganizationListComponent, когда я нахожусь на маршруте organizations/list получается, есть кнопка, по которой если нажать, нужно перевести на компонент CreateOrganizationComponent
источник

B

Bretbas in Angular - русскоговорящее сообщество
Эта кнопка находится в модуле OrganizationsModule, а этот модуль ничего не должен знать о маршруте /organizations — том маршруте, который объявлен в рутовом модуле для lazy-loading OrganizationsModule
источник

B

Bretbas in Angular - русскоговорящее сообщество
И если я в эту кнопку сделаю так:
[routerLink]=['/organizations', 'create']

то это будет работать

Но нарушается инкапсуляция, потому что если изменится сегмент /organizations когда нибудь, мне придется уже изменять его не только в рутовом модуле, а еще где то внутри модуля OrganizationsModule, в частности на этой кнопке
источник