Vscode-ng-language-service: Méthode inconnue .bind

Créé le 9 mai 2017  ·  41Commentaires  ·  Source: angular/vscode-ng-language-service

J'utilise VS Code v1.12.1 et Angular Language Service v0.1.3, avec un projet Ionic 3, et je reçois ces avertissements, même si tout va bien ...

bug

Commentaire le plus utile

J'ai le même problème dans Angular 6.

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

Tout fonctionne bien et je ne vois aucune erreur lors de l'exécution, juste dans l'éditeur:

[Angular] Méthode inconnue 'bind'

Tous les 41 commentaires

Je viens de voir cela avec Angular Language Service et VS Code 1.13. se produit dans le didacticiel Heroes lors de l'ajout de la méthode (save ()) à hero-detail-component.html

Le code fonctionne bien, mais affiche des lignes ondulées rouges même si la méthode est clairement présente.

@bkbonner Je ne peux pas reproduire cela avec https://angular.io/generated/zips/toh-pt6/toh-pt6.zip Avez-vous une modification à cela qui montre ce problème.

Je peux essayer d'envoyer ma base de code. Laissez-moi voir s'il y a autre chose de différent en vous qui le laisse fonctionner.

Salut @chuckjaz . Donc, si je vais modifier le fichier .ts et supprimer la méthode save (), puis aller dans le fichier html correspondant et modifier l'appel du nom de la méthode dans le fichier html, cela le souligne. Si j'ajoute la méthode du côté .ts et que je retourne au fichier .html, la ligne ondulée reste jusqu'à ce que je clique sur ctrl + espace et que je sélectionne l'une des options de méthode dans la liste déroulante.

Je ne sais pas si c'est ainsi que cela se comportait avant, mais c'est peut-être la façon dont la validation de l'existence de la méthode est déclenchée qui cause le résultat déroutant.

J'ai inclus une vidéo pour montrer à quoi cela ressemble: https://youtu.be/UjfFprgvTQg pas d'audio, mais j'ai inclus des sous-titres codés pour le décrire.

Je suis également confronté au même problème ...

J'ai le même problème en utilisant .bind dans un modèle.

Cela fonctionne mais nous obtenons des erreurs.

+1 même problème ici

Une solution encore?

+1 ici aussi!

+1 exactement le même problème. Les mises à jour?

Même erreur avec .bind(this) ici.

Confirmé se passe toujours dans VS Code avec le service de langage angulaire. Ionique 3, angulaire 5.

Se produit également avec 'hasError' dans l'extension 0.1.9 dans VS Code 1.24.1:

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

se plaint que hasError n'est pas une fonction, bien qu'elle le soit (dans la classe AbstractControl des formes angulaires).

Edit: bien que cela puisse être corrigé en ajoutant un "!" Donc:
<div *ngIf="form.get('phone')!.hasError(validation.type)">

C'est parce que la méthode get renvoie AbstractControl _or_ null. Je présume que le service linguistique se plaint que «hasError» n'est pas une fonction de «null». Ce serait plus clair si l'erreur était:
The expression might be null
comme pour d'autres fonctions, par exemple <div *ngIf="form.get('phone').errors[validation.type]">
produit l'erreur The expression might be null .

Cela se passe également avec $any() , qui devrait toujours exister (https://angular.io/guide/aot-compiler#disabling-type-checking-using-any)

ex)

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

Même problème ici Ionic3 Angular5

J'ai eu la même erreur dans VS Code v1.25.1 + Angular v6.0.1

Vous avez la même erreur dans le code VS 1.25.1

La dernière version: 1.25.1
Commit: 1dfc5e557209371715f655691b1235b6b26a06be
Date: 2018-07-11T15: 40: 20.190Z
Électron: 1.7.12
Chrome: 58.0.3029.110
Node.js: 7.9.0
V8: 5.8.283.38
Architecture: x64

Même erreur dans Angular 5 et VS Code 1.26.0

J'ai le même problème dans Angular 6.

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

Tout fonctionne bien et je ne vois aucune erreur lors de l'exécution, juste dans l'éditeur:

[Angular] Méthode inconnue 'bind'

La même chose m'arrive.

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

Existe-t-il un moyen de surpasser cet avertissement au lieu que tout le monde dise que j'ai le même problème?

essayez d'ajouter un point-virgule après le nom de la fonction comme ceci


Bouton de test

Cela semble supprimer l'avertissement.

Honnêtement, je n'ai aucune idée si c'est toujours un problème.
VS Code et l'ALS ont été beaucoup mis à jour depuis, et je n'ai pas vu cet avertissement depuis longtemps ...

Oui, c'est toujours un problème.
image

VS Code À propos de:

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

Essayez de mettre; Le 18 février 2019 à 05h09, Rafael [email protected] a écrit: Oui , c'est toujours un problème.

VS Code À propos de:
La dernière version: 1.31.1
Commit: 1b8e8302e405050205e69b59abb3559592bb9e60
Date: 2019-02-12T02: 19: 29.629Z
Électron: 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-générique

—Vous recevez ceci parce que vous avez commenté. Répondez directement à cet e-mail, affichez-le sur GitHub ou désactivez le fil de discussion.

@multilexus cela ne fonctionne pas.

Oui, c'est toujours un problème.
image

VS Code À propos de:

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

Même problème ici: - / Une solution?

+1 avec affichage angulaire 7 Avec sur un tapis de saisie semi-automatique
image

Fonctionne bien mais avertissements

@multilexus a raison, je travaille avec Angular 7 dans le code VS 1.31.1

C'est toujours un problème. Des nouvelles?

La même chose m'arrive.

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

écrivez comme ceci: -
[myFun] = 'handleFun'
--- en html

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

Oui, c'est toujours un problème.
image
VS Code À propos de:

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

Même problème ici: - / Une solution?

écrivez comme ceci: -
(click) = 'handleFun'
--- en html

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

+1 avec affichage angulaire 7 Avec sur un tapis de saisie semi-automatique
image

Fonctionne bien mais avertissements

écrivez comme ceci: -
[displayWith] = 'displayFun'
--- en html

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

Rencontré ce bogue lors de l'utilisation $any() méthode <ng-template> dans Angular 7.

Se plaint toujours pour hasError en
<div *ngIf="form.get('phone').hasError(validation.type)">
VSCode 1.34.0
poste 0.800.0

Jusqu'à ce qu'ils le réparent, il existe une solution de contournement (au moins pour myMethod.bind(this) :

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

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

Jusqu'à ce qu'ils le réparent, il existe une solution de contournement (au moins pour myMethod.bind(this) :

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

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

C'est une mauvaise idée d'utiliser la fonction bind dans le template. bind crée une nouvelle fonction à chaque appel. Vous allez donc créer une nouvelle fonction à chaque détection de changement. il est préférable d'assigner la fonction de flèche à la propriété de classe:

`` `dactylographié
myMethod = (param1: any, param2: any) => {
// logique de méthode
}

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

@ andrius-pra Bonne idée, je vais maintenant l'utiliser, merci.

Désolé tout le monde que nous ayons mis si longtemps à résoudre ce problème. Le PR ci-dessus devrait y remédier.

Ce problème a été automatiquement verrouillé en raison de l'inactivité.
Veuillez signaler un nouveau problème si vous rencontrez un problème similaire ou connexe.

En savoir plus sur notre politique de verrouillage automatique des conversations .

_Cette action a été effectuée automatiquement par un bot._

Cette page vous a été utile?
0 / 5 - 0 notes