/ / PhpStorm Angular subscribe - zmienna nierozstrzygnięta - javascript, angularjs, angular, phpstorm

Subskrypcja PhpStorm Angular - nierozwiązana zmienna - javascript, angularjs, angle, phpstorm

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 № 1

To 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.

  1. 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.

  1. 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"];
});