Próbowałem utworzyć prosty komponent w moim projekcie angular-cli, który ładuje parametr z adresu URL
@Component({
templateUrl: "./confirm-registration.component.html",
})
export class ConfirmRegistrationComponent implements OnInit {
constructor(private route: ActivatedRoute,
private router: Router) { }
ngOnInit() {
this.route.params.switchMap((params: Params) => {
return console.log("token:", params["registrationToken"]);
});
}
}
ale dostałem błąd:
Nie udało się skompilować.
... / potwierdź rejestrację. składnik.ts (15,33): Argument typu „(params: Params) => void” nie można przypisać do parametru typu "(wartość: parametry, indeks: liczba) => ObservableInput <{}>”. Wpisz „void” nie można przypisać „ObservableInput <{}>”.
Używam Angulara w wersji 4.0.3. gdzie popełniłem błąd?
Odpowiedzi:
1 dla odpowiedzi № 1Pobieram parametr zapytania za pomocą tego:
export class ConfirmRegistrationComponent implements OnInit {
private registrationToken: string;
constructor(private route: ActivatedRoute) {}
ngOnInit() {
this.route.params.subscribe(
(params) => {
this.registrationToken = params["registrationToken"];
}
)
1 dla odpowiedzi nr 2
Tak jak dzejdzej wskazał w jego komentarz, musisz zwrócić obserwowalne. Wygląda na to, że zmieniło się to w ostatnich miesiącach (przynajmniej skompilowało to, kiedy próbowałem kilka miesięcy temu) i nie zmieniły jeszcze dokumentów.
Więc w twoim przypadku możesz po prostu zwrócić to samo:
ngOnInit() {
this.route.params.switchMap((params: Params) => {
console.log("token:", params["registrationToken"]);
return this.route.params;
});
}
0 dla odpowiedzi № 3
Aby uzyskać parametry zapytania, zrobiłem to z angular-2. Nie jestem pewien, czy to działa z kątowym-4
constructor(private route: ActivatedRoute) {
}
ngOnInit() {
let urParam = this.route.snapshot.queryParams["urParam"];
}
Mam nadzieję że to pomoże