Vscode-ng-language-service: Unbekannte Methode .bind

Erstellt am 9. Mai 2017  ·  41Kommentare  ·  Quelle: angular/vscode-ng-language-service

Ich verwende VS Code v1.12.1 und Angular Language Service v0.1.3 mit einem Ionic 3-Projekt und erhalte diese Warnungen, obwohl alles in Ordnung ist ...

bug

Hilfreichster Kommentar

Ich habe das gleiche Problem in Angular 6.

[displayWith]="displayFn.bind(this)"

Alles funktioniert gut und ich sehe keine Fehler beim Ausführen, nur im Editor:

[Angular] Unbekannte Methode 'bind'

Alle 41 Kommentare

Ich habe das gerade mit Angular Language Service und VS Code 1.13 gesehen. passiert im Heroes Tutorial beim Hinzufügen der Methode (save ()) zu hero-detail-component.html

Code funktioniert gut, zeigt aber rote, schnörkellose Linien, obwohl die Methode eindeutig vorhanden ist.

@bkbonner Ich kann dies nicht mit https://angular.io/generated/zips/toh-pt6/toh-pt6.zip reproduzieren. Haben Sie eine Änderung daran, die dieses Problem anzeigt?

Ich kann versuchen, meine Codebasis zu senden. Lassen Sie mich sehen, ob es noch etwas anderes in Ihnen gibt, das es funktionieren lässt.

Hallo @chuckjaz . Wenn ich also die .ts-Datei ändere und die save () -Methode entferne und dann zur entsprechenden HTML-Datei gehe und den Methodennamensaufruf in der HTML-Datei ändere, wird dies unterstrichen. Wenn ich die Methode wieder auf der .ts-Seite hinzufüge und zur .html-Datei zurückkehre, bleibt die verschnörkelte Linie bestehen, bis ich auf Strg + Leertaste klicke und eine der Methodenoptionen in der Dropdown-Liste auswähle.

Ich bin mir nicht sicher, ob es sich zuvor so verhalten hat, aber vielleicht ist es die Art und Weise, wie die Validierung der Existenz der Methode ausgelöst wird, die das verwirrende Ergebnis verursacht.

Ich habe ein Video beigefügt, um zu zeigen, wie es aussieht: https://youtu.be/UjfFprgvTQg kein Audio, aber ich habe Untertitel beigefügt, um es zu beschreiben.

Ich stehe auch vor dem gleichen Problem ...

Ich habe das gleiche Problem mit .bind in einer Vorlage.

Es funktioniert, aber wir bekommen Fehler.

+1 gleiche Ausgabe hier

Noch eine Lösung?

+1 auch hier!

+1 genau das gleiche Problem. Irgendwelche Updates?

Gleicher Fehler mit .bind(this) hier.

Bestätigt, dass dies immer noch in VS Code mit eckigem Sprachdienst geschieht. Ion 3, Winkel 5.

Passiert auch mit 'hasError' in Erweiterung 0.1.9 in VS Code 1.24.1:

<div *ngIf="form.get('phone').hasError(validation.type)">

beschwert sich, dass hasError keine Funktion ist, obwohl dies der Fall ist (in der AbstractControl-Klasse von Angular-Formularen).

Bearbeiten: obwohl dies durch Hinzufügen eines "!" so:
<div *ngIf="form.get('phone')!.hasError(validation.type)">

Dies liegt daran, dass die get-Methode AbstractControl _or_ null zurückgibt. Ich nehme an, der Sprachdienst beschwert sich, dass 'hasError' keine Funktion von 'null' ist. Es wäre klarer, wenn der Fehler wäre:
The expression might be null
wie es für andere Funktionen ist, zB <div *ngIf="form.get('phone').errors[validation.type]">
erzeugt den Fehler The expression might be null .

Passiert auch mit $any() , das immer existieren sollte (https://angular.io/guide/aot-compiler#disabling-type-checking-using-any)

Ex)

<input [(ngModel)]="$any(content).houseId" />
[Angular] Unknown method '$any'

Gleiches Problem hier Ionic3 Angular5

Ich habe den gleichen Fehler im VS-Code v1.25.1 + Angular v6.0.1

Ich habe den gleichen Fehler in VS-Code 1.25.1 erhalten

Version: 1.25.1
Commit: 1dfc5e557209371715f655691b1235b6b26a06be
Datum: 2018-07-11T15: 40: 20.190Z
Elektron: 1.7.12
Chrome: 58.0.3029.110
Node.js: 7.9.0
V8: 5.8.283.38
Architektur: x64

Gleicher Fehler in Angular 5 und VS Code 1.26.0

Ich habe das gleiche Problem in Angular 6.

[displayWith]="displayFn.bind(this)"

Alles funktioniert gut und ich sehe keine Fehler beim Ausführen, nur im Editor:

[Angular] Unbekannte Methode 'bind'

Das gleiche passiert mir.

[myFun]="myService.myFunc.bind(myService)"

Gibt es eine Möglichkeit, diese Warnung zu unterdrücken, anstatt dass alle sagen, ich habe das gleiche Problem?

Versuchen Sie, nach dem Funktionsnamen wie folgt ein Semikolon hinzuzufügen


Testknopf

Dies scheint die Warnung zu entfernen.

Ehrlich gesagt habe ich keine Ahnung, ob dies noch ein Problem ist.
VS Code & ALS wurden seitdem viel aktualisiert, und ich habe diese Warnung schon lange nicht mehr gesehen ...

Ja, das ist immer noch ein Problem.
image

VS-Code Über:

Version: 1.31.1
Commit: 1b8e8302e405050205e69b59abb3559592bb9e60
Date: 2019-02-12T02:19:29.629Z
Electron: 3.1.2
Chrome: 66.0.3359.181
Node.js: 10.2.0
V8: 6.6.346.32
OS: Linux x64 4.15.0-45-generic

Versuchen Sie zu setzen; Am 18. Februar 2019, 05:09 Uhr, schrieb Rafael [email protected] : Ja , dies ist immer noch ein Problem.

VS-Code Über:
Version: 1.31.1
Commit: 1b8e8302e405050205e69b59abb3559592bb9e60
Datum: 2019-02-12T02: 19: 29.629Z
Elektron: 3.1.2
Chrome: 66.0.3359.181
Node.js: 10.2.0
V8: 6.6.346.32
Betriebssystem: Linux x64 4.15.0-45-generic

- Sie erhalten dies, weil Sie einen Kommentar abgegeben haben. Antworten Sie direkt auf diese E-Mail, zeigen Sie sie auf GitHub an oder schalten Sie den Thread stumm.

@ Multilexus das funktioniert nicht.

Ja, das ist immer noch ein Problem.
image

VS-Code Über:

Version: 1.31.1
Commit: 1b8e8302e405050205e69b59abb3559592bb9e60
Date: 2019-02-12T02:19:29.629Z
Electron: 3.1.2
Chrome: 66.0.3359.181
Node.js: 10.2.0
V8: 6.6.346.32
OS: Linux x64 4.15.0-45-generic

Gleiches Problem hier: - / Irgendeine Lösung?

+1 mit eckigem 7-DisplayMit einer matten Autovervollständigung
image

Funktioniert gut, aber Warnungen

@multilexus ist richtig Ich arbeite mit Angular 7 in VS Code 1.31.1

Es ist immer noch ein Problem. Keine Neuigkeiten?

Das gleiche passiert mir.

[myFun]="myService.myFunc.bind(myService)"

schreibe so: -
[myFun] = 'handleFun'
--- in html

this.handleFun = this.myService.myFunc.bind (myService);
--in ts Datei

Ja, das ist immer noch ein Problem.
image
VS-Code Über:

Version: 1.31.1
Commit: 1b8e8302e405050205e69b59abb3559592bb9e60
Date: 2019-02-12T02:19:29.629Z
Electron: 3.1.2
Chrome: 66.0.3359.181
Node.js: 10.2.0
V8: 6.6.346.32
OS: Linux x64 4.15.0-45-generic

Gleiches Problem hier: - / Irgendeine Lösung?

schreibe so: -
(click) = 'handleFun'
--- in html

this.handleFun = this.setLanguage.bind (this, language);
--in ts Datei

+1 mit eckigem 7-DisplayMit einer matten Autovervollständigung
image

Funktioniert gut, aber Warnungen

schreibe so: -
[displayWith] = 'displayFun'
--- in html

this.displayFun = this.displayFun.bind (this);
--in ts Datei

Dieser Fehler ist aufgetreten, als die Methode $any() in <ng-template> in Angular 7 verwendet wurde.

Ich beschwere mich immer noch für hasError in
<div *ngIf="form.get('phone').hasError(validation.type)">
VSCode 1.34.0
Erweiterung 0.800.0

Bis sie das Problem beheben, gibt es eine Problemumgehung (zumindest für myMethod.bind(this) :

bindMyMethodWithThis() {
    return this.myMethod.bind(this);
}

<MyComponent [myInput]="bindMyMethodWithThis()">

Bis sie das Problem beheben, gibt es eine Problemumgehung (zumindest für myMethod.bind(this) :

bindMyMethodWithThis() {
    return this.myMethod.bind(this);
}

<MyComponent [myInput]="bindMyMethodWithThis()">

Es ist eine schlechte Idee, die Funktion bind in der Vorlage zu verwenden. bind erstellt bei jedem Aufruf eine neue Funktion. So erstellen Sie bei jeder Änderungserkennung eine neue Funktion. Es ist besser, der Klasseneigenschaft eine Pfeilfunktion zuzuweisen:

`` `Typoskript
myMethod = (param1: any, param2: any) => {
// Methodenlogik
}}

```html
<MyComponent [myInput]="myMethod">

@ andrius-pra Schöne Idee, ich werde das jetzt nutzen, danke.

Es tut allen leid, dass wir so lange gebraucht haben, um dieses Problem zu beheben. Die obige PR sollte das Problem beheben.

Dieses Problem wurde aufgrund von Inaktivität automatisch gesperrt.
Bitte reichen Sie ein neues Problem ein, wenn Sie auf ein ähnliches oder verwandtes Problem stoßen.

Lesen Sie mehr über unsere Richtlinien zum automatischen Sperren von Konversationen .

_Diese Aktion wurde automatisch von einem Bot ausgeführt._

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen