Vscode-ng-language-service: Método desconhecido .bind

Criado em 9 mai. 2017  ·  41Comentários  ·  Fonte: angular/vscode-ng-language-service

Estou usando VS Code v1.12.1 e Angular Language Service v0.1.3, com um projeto Ionic 3, e recebo esses avisos, apesar de estar tudo bem ...

bug

Comentários muito úteis

Eu tenho o mesmo problema no Angular 6.

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

Tudo funciona bem e não vejo erros durante a execução, apenas no editor:

[Angular] Método desconhecido 'bind'

Todos 41 comentários

Acabei de ver isso com o Angular Language Service e o VS Code 1.13. acontece no Tutorial Heroes ao adicionar o método (save ()) ao hero-detail-component.html

O código funciona bem, mas mostra linhas vermelhas irregulares, embora o método esteja claramente lá.

@bkbonner Não consigo reproduzir isso com https://angular.io/generated/zips/toh-pt6/toh-pt6.zip Você tem alguma modificação nisso que mostre esse problema.

Posso tentar enviar minha base de código. Deixe-me ver se há algo diferente em você que permite que isso funcione.

Olá, @chuckjaz . Portanto, se eu modificar o arquivo .ts e remover o método save () e, em seguida, for para o arquivo html correspondente e modificar a chamada do nome do método no arquivo html, ele o sublinha. Se eu adicionar o método de volta no lado .ts e voltar ao arquivo .html, a linha irregular permanece até que eu clique em ctrl + espaço e selecione uma das opções de método no menu suspenso.

Não tenho certeza se é assim que ele se comportava antes, mas talvez seja como a validação da existência do método está sendo acionada que está causando o resultado confuso.

Incluí um vídeo para mostrar como fica: https://youtu.be/UjfFprgvTQg sem áudio, mas incluí legendas para descrevê-lo.

Estou enfrentando o mesmo problema também ...

Eu tenho o mesmo problema ao usar .bind em um modelo.

Funciona, mas obtemos erros.

+1 mesmo problema aqui

Alguma solução ainda?

1 aqui também!

1 exatamente o mesmo problema. Alguma atualização?

Mesmo erro com .bind(this) aqui.

Confirmado que ainda está acontecendo no VS Code com serviço de linguagem angular. Ionic 3, Angular 5.

Também acontecendo com 'hasError' na extensão 0.1.9 no VS Code 1.24.1:

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

reclama que hasError não é uma função, embora seja (na classe AbstractControl de formas angulares).

Editar: embora isso possa ser corrigido adicionando um "!" portanto:
<div *ngIf="form.get('phone')!.hasError(validation.type)">

Isso ocorre porque o método get retorna AbstractControl _or_ null. Presumo que o serviço de idioma está reclamando que 'hasError' não é uma função de 'null'. Ficaria mais claro se o erro fosse:
The expression might be null
assim como para outras funções, por exemplo <div *ngIf="form.get('phone').errors[validation.type]">
produz o erro The expression might be null .

Também acontecendo com $any() , que sempre deve existir (https://angular.io/guide/aot-compiler#disabling-type-checking-using-any)

ex)

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

Mesmo problema aqui Ionic3 Angular5

Recebi o mesmo erro no código VS v1.25.1 + Angular v6.0.1

Obteve o mesmo erro no código VS 1.25.1

Versão: 1.25.1
Commit: 1dfc5e557209371715f655691b1235b6b26a06be
Data: 11/07/2018 T15: 40: 20,190Z
Elétron: 1.7.12
Chrome: 58.0.3029.110
Node.js: 7.9.0
V8: 5.8.283.38
Arquitetura: x64

Mesmo erro em Angular 5 e VS Code 1.26.0

Eu tenho o mesmo problema no Angular 6.

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

Tudo funciona bem e não vejo erros durante a execução, apenas no editor:

[Angular] Método desconhecido 'bind'

O mesmo acontece comigo.

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

Existe alguma maneira de suprimir esse aviso em vez de todos dizerem que tenho o mesmo problema?

tente adicionar um ponto e vírgula após o nome da função como este


Botão de teste

Isso parece remover o aviso.

Honestamente, não tenho ideia se isso ainda é um problema.
O VS Code e o ALS foram muito atualizados desde então, e não vejo esse aviso há muito tempo ...

Sim, isso ainda é um problema.
image

Código VS sobre:

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

Tente colocar; depois disso. Em 18 de fevereiro de 2019, às 5h09, Rafael [email protected] escreveu: Sim , isso ainda é um problema.

Código VS sobre:
Versão: 1.31.1
Confirmar: 1b8e8302e405050205e69b59abb3559592bb9e60
Data: 12/02/2019 T02: 19: 29.629Z
Elétron: 3.1.2
Chrome: 66.0.3359.181
Node.js: 10.2.0
V8: 6.6.346.32
SO: Linux x64 4.15.0-45-genérico

—Você está recebendo isto porque comentou.Responda a este e-mail diretamente, visualize-o no GitHub ou ignore a conversa.

@multilexus isso não está funcionando.

Sim, isso ainda é um problema.
image

Código VS sobre:

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

O mesmo problema aqui: - / Alguma solução?

+1 com display angular 7 com preenchimento automático de esteira
image

Funciona bem, mas avisos

@multilexus está certo, estou trabalhando com Angular 7 no código VS 1.31.1

Ainda é um problema. Alguma novidade?

O mesmo acontece comigo.

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

escreva assim : -
[myFun] = 'handleFun'
--- em html

this.handleFun = this.myService.myFunc.bind (myService);
- no arquivo ts

Sim, isso ainda é um problema.
image
Código VS sobre:

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

O mesmo problema aqui: - / Alguma solução?

escreva assim : -
(clique) = 'handleFun'
--- em html

this.handleFun = this.setLanguage.bind (este, idioma);
- no arquivo ts

+1 com display angular 7 com preenchimento automático de esteira
image

Funciona bem, mas avisos

escreva assim : -
[displayWith] = 'displayFun'
--- em html

this.displayFun = this.displayFun.bind (this);
- no arquivo ts

Encontrado este bug ao usar o método $any() em <ng-template> no Angular 7.

Ainda reclamando de hasError em
<div *ngIf="form.get('phone').hasError(validation.type)">
VSCode 1.34.0
extensão 0.800.0

Até que eles consertem, há uma solução alternativa (pelo menos para myMethod.bind(this) :

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

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

Até que eles consertem, há uma solução alternativa (pelo menos para myMethod.bind(this) :

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

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

É uma má ideia usar a função bind dentro do modelo. bind function cria uma nova função em cada chamada. Portanto, você criará uma nova função em cada detecção de mudança. é melhor atribuir a função de seta à propriedade da classe:

`` `texto datilografado
meuMétodo = (param1: qualquer, param2: qualquer) => {
// método lógico
}

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

@andrius-pra Boa ideia, vou usar agora, obrigado.

Lamentamos a todos que demoramos tanto para resolver esse problema. O PR acima deve corrigir isso.

Este problema foi bloqueado automaticamente devido à inatividade.
Registre um novo problema se você estiver encontrando um problema semelhante ou relacionado.

Leia mais sobre nossa política de bloqueio automático de conversas .

_Esta ação foi executada automaticamente por um bot._

Esta página foi útil?
0 / 5 - 0 avaliações