Обратите внимание, что можно получить параметры маршрута от службы

Попробуйте использовать код ниже: поэтому код будет отображаться только тогда, когда его фактически загруженный

<div v-if="tools">
    This is Default child component
    {{tools[0].name}}
</div>
0
задан 3xGuy 19 January 2019 в 19:03
поделиться

1 ответ

Действительно странная вещь заключается в том, что если я делаю то же самое в компоненте, что и сервис, один возвращает идентификатор, а другой возвращает неопределенный.

Если вы не передаете activeRoute в метод service, он не будет иметь доступа к этим данным. Служба (обычно) представляет собой одноэлементный объект, который находится за пределами области действия компонента и внедряется через систему DI.

Альтернативой было бы то, чтобы сервисный метод (или статическая функция) принимал активный маршрут в качестве параметра и работал с тем, что передает компонент. Вы можете передать его из компонента в ngOnInit.

//service or static method
recordParams(activeRoute: ActivatedRoute) {
    activeRoute.params.subscribe(params=> console.log(params));
}

//component
constructor(private activeRoute: ActivatedRoute, private theService: TheService) {}

ngOnInit() {
    this.theService.recordParams(this.activeRoute);
}

Более альтернативно , у вас есть базовый тип компонента, который делает это в ngOnInit, и любой компонент, для которого вы хотите иметь эту функциональность, может расширять базу, вызывать родительский конструктор (передавая в активированный маршрут) и вызовите super.ngOnInit.

Если вы немного подробнее расскажете о своей конечной цели, я был бы рад дать более конкретный ответ!

0
ответ дан OneLunch Man 19 January 2019 в 19:03
поделиться
Другие вопросы по тегам:

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