Пытаюсь извлечь параметры запроса из URL
https://localhost:8080/myapp/shared?id1=2&id2=4
Мне нужно использовать значения id1
и id2
в моем app.component.ts
. Я пытаюсь использовать Router, ActivatedRoute, Params from '@angular/router'
, но когда я запускаю приложение, главная страница не загружается, и я вижу следующую ошибку в консоли браузера:
Error: StaticInjectorError[t]:
StaticInjectorError[t]:
NullInjectorError: No provider for t!
Stack trace:
LMZF/</yi</t.prototype.get@http://localhost:8081/myapp/main.a7059837ce4dd4ad4d9f.bundle.js:1:293926
y/<@http://localhost:8081/myapp/main.a7059837ce4dd4ad4d9f.bundle.js:1:237630
y@http://localhost:8081/myapp/main.a7059837ce4dd4ad4d9f.bundle.js:1:237237
А вот как выглядит app.component.ts
:
import { Component, Input, OnInit } from '@angular/core';
import { HeaderComponent } from './header/header.component';
import {Router, ActivatedRoute, Params} from '@angular/router'; //added this import statement
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {
constructor(private activatedRoute: ActivatedRoute) {}
// added following code for query params
ngOnInit() {
// subscribe to router event
this.activatedRoute.params.subscribe((params: Params) => {
let userId = params['id1'];
console.log("parameter is: "+ userId);
});
}
title = 'My First Angular App';
}
Дело в том, что я добавил Router
код, который вызывает ошибку, даже не загружая вышеуказанный URL. Когда я пытаюсь запустить приложение без кода параметра запроса, оно работает нормально.
Пробовал это решение от этого ответа . Также рассмотрели еще один аналогичный вопрос , но это не помогло.
Может кто-нибудь объяснить, почему это происходит?
UPDATE
Добавлен следующий оператор импорта в app.module.ts
:
imports: [
BrowserModule,
HttpModule,
RouterModule.forRoot([{
path: '',
component: AppComponent
},
])
Теперь это приводит к загрузке приложения, но параметры не извлекаются. Выдает следующую ошибку на консоли браузера:
Error: Uncaught (in promise): Error: Cannot match any routes. URL Segment: 'shared'
ОБНОВЛЕНИЕ 2
Добавление маршрута для соответствующего URL решает проблему с ошибкой консоли, но мой параметр все еще не определен.
RouterModule.forRoot([{
path: '',
component: AppComponent
},
{
path: 'shared',
component: AppComponent
},
])