Korzystam z PhpStorm do opracowania aplikacji Angular i mam „nierozwiązana zmienna” błąd w
params.myid
Oto linia kodu:
this.route.params.subscribe((params: Params) => {
const avalancheid = params.myid;
});
Nie ma błędu, jeśli zmienię typ na "każdy" zamiast „Params”
this.route.params.subscribe((params: any) => {
const avalancheid = params.myid;
});
Wersja kątowa: 4.2.4, wersja PhpStorm: 2017.2.4
Odpowiedzi:
2 dla odpowiedzi № 1To dlatego, że twój Params
klasa nie zawiera klucza myid
, za pomocą nawiasów kwadratowych params["myid"]
powinieneś być w stanie uzyskać wartość, jak pokazano w docs.
Przyczyną awarii jest to, że mówisz kompilatorowi TypeScript „Hej, oczekuję Params
”, w którym to momencie należy przejść do polecenia uzyskania właściwości o nazwie myid
który oryginał Params
klasa nie zawiera, stąd błąd.
1 dla odpowiedzi nr 2
Mogą tu być dwa problemy.
- Nie importujesz
Params
od@angular/router
:
lubię to:
import {Params} from "@angular/router";
Potrzebujesz tego Params
typ, ponieważ jest zdefiniowany jako [key: string]: any
, który pozwala używać notacji kropkowej do poruszania się po obiekcie.
- Zła wersja maszynopisu:
To „zezwolenie” na korzystanie z dot nation jest jednak stosunkowo nową funkcją TypeScript
. Innym problemem może być to, że używasz starszej wersji TypeScript. Spróbuj zaktualizować przynajmniej do wersji 2.4.x
, aby móc korzystać z tej funkcji i podczas korzystania z niej. Sprawdź, czy możesz również zaktualizować do najnowszej wersji kątowej. To jest tego warte.
Jeśli nie chcesz aktualizować, mimo że gorąco zachęcam do zrobienia tego, możesz użyć innej notacji, aby uzyskać dostęp do nieruchomości:
this.route.params.subscribe((params: Params) => {
const avalancheid = params["myid"];
});