Vscode-ng-language-service: Неизвестный метод .bind

Созданный на 9 мая 2017  ·  41Комментарии  ·  Источник: angular/vscode-ng-language-service

Я использую VS Code v1.12.1 и Angular Language Service v0.1.3 с проектом Ionic 3, и я получаю эти предупреждения, несмотря на то, что все в порядке ...

Самый полезный комментарий

У меня такая же проблема в Angular 6.

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

Все работает нормально и при запуске ошибок не вижу, только в редакторе:

[Angular] Неизвестный метод bind

Все 41 Комментарий

Я только что увидел это с помощью Angular Language Service и VS Code 1.13. происходит в Heroes Tutorial при добавлении метода (save ()) в hero-detail-component.html

Код работает нормально, но показывает красные волнистые линии, хотя метод явно присутствует.

@bkbonner Я не могу воспроизвести это с помощью https://angular.io/generated/zips/toh-pt6/toh-pt6.zip. У вас есть модификация, которая показывает эту проблему.

Я могу попробовать отправить свою кодовую базу. Позвольте мне посмотреть, есть ли что-то еще в вас, что позволяет этому работать.

Привет @chuckjaz . Поэтому, если я изменю файл .ts и удалю метод save (), а затем перейду к соответствующему файлу html и изменю вызов имени метода в файле html, он это подчеркнет. Если я добавлю метод обратно на сторону .ts и вернусь к файлу .html, волнистая линия останется, пока я не нажму ctrl + пробел и не выберу один из вариантов метода в раскрывающемся списке.

Я не уверен, так ли он вел себя раньше, но, возможно, именно то, как запускается проверка существования метода, вызывает запутанный результат.

Я включил видео, чтобы показать, как это выглядит: https://youtu.be/UjfFprgvTQg без звука, но я добавил закрытые субтитры, чтобы описать это.

У меня такая же проблема ...

У меня такая же проблема с использованием .bind в шаблоне.

Это работает, но мы получаем ошибки.

+1 такая же проблема здесь

Есть еще какое-нибудь решение?

+1 здесь тоже!

+1 точно такая же проблема. Любые обновления?

Та же ошибка с .bind(this) здесь.

Подтверждено, что все еще происходит в VS Code с языковым сервисом angular. Ионный 3, Угловой 5.

Также происходит с hasError в расширении 0.1.9 в VS Code 1.24.1:

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

жалуется, что hasError не является функцией, хотя это так (в классе AbstractControl форм Angular).

Изменить: хотя это можно исправить, добавив "!" таким образом:
<div *ngIf="form.get('phone')!.hasError(validation.type)">

Это потому, что метод get возвращает AbstractControl _or_ null. Я предполагаю, что языковая служба жалуется, что hasError не является функцией от null. Было бы яснее, если бы ошибка была:
The expression might be null
как и для других функций, например, <div *ngIf="form.get('phone').errors[validation.type]">
выдает ошибку The expression might be null .

Также происходит с $any() , который всегда должен существовать (https://angular.io/guide/aot-compiler#disables-type-checking-using-any)

бывший)

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

Такая же проблема здесь Ionic3 Angular5

У меня такая же ошибка в VS Code v1.25.1 + Angular v6.0.1

Получил ту же ошибку в VS code 1.25.1

Версия: 1.25.1
Фиксация: 1dfc5e557209371715f655691b1235b6b26a06be
Дата: 2018-07-11T15: 40: 20.190Z
Электрон: 1.7.12
Хром: 58.0.3029.110
Node.js: 7.9.0
V8: 5.8.283.38
Архитектура: x64

Такая же ошибка в Angular 5 и VS Code 1.26.0

У меня такая же проблема в Angular 6.

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

Все работает нормально и при запуске ошибок не вижу, только в редакторе:

[Angular] Неизвестный метод bind

То же происходит и со мной.

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

Есть ли способ превзойти это предупреждение вместо того, чтобы все говорили, что у меня такая же проблема?

попробуйте добавить точку с запятой после имени функции, как это


Кнопка тестирования

Кажется, это снимает предупреждение.

Честно говоря, я понятия не имею, остается ли это проблемой.
VS Code и ALS с тех пор много обновлялись, и я давно не видел этого предупреждения ...

Да, это все еще проблема.
image

Код VS О:

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

Попробуйте поставить; 18 февраля 2019 г. в 5:09 Rafael [email protected] написал: Да , это все еще проблема.

Код VS О:
Версия: 1.31.1
Фиксация: 1b8e8302e405050205e69b59abb3559592bb9e60
Дата: 2019-02-12T02: 19: 29.629Z
Электрон: 3.1.2
Хром: 66.0.3359.181
Node.js: 10.2.0
V8: 6.6.346.32
ОС: Linux x64 4.15.0-45-generic

- Вы получили это, потому что прокомментировали. Ответьте на это письмо напрямую, просмотрите его на GitHub или отключите тред.

@multilexus это не работает.

Да, это все еще проблема.
image

Код VS О:

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

Здесь та же проблема: - / Любое решение?

+1 с угловым 7 дисплеем с на мат-автозаполнением
image

Работает нормально, но предупреждения

@multilexus прав, я работаю с Angular 7 в VS code 1.31.1

Это все еще проблема. Что новенького?

То же происходит и со мной.

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

напишите так : -
[myFun] = 'handleFun'
--- в html

this.handleFun = this.myService.myFunc.bind (myService);
--in ts файл

Да, это все еще проблема.
image
Код VS О:

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

Здесь та же проблема: - / Любое решение?

напишите так : -
(клик) = 'handleFun'
--- в html

this.handleFun = this.setLanguage.bind (это, язык);
--in ts файл

+1 с угловым 7 дисплеем с на мат-автозаполнением
image

Работает нормально, но предупреждения

напишите так : -
[displayWith] = 'displayFun'
--- в html

this.displayFun = this.displayFun.bind (это);
--in ts файл

Обнаружена эта ошибка при использовании метода $any() в <ng-template> в Angular 7.

Все еще жалуется на hasError в
<div *ngIf="form.get('phone').hasError(validation.type)">
VSCode 1.34.0
расширение 0.800.0

Пока они не исправят это, есть обходной путь (по крайней мере, для myMethod.bind(this) :

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

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

Пока они не исправят это, есть обходной путь (по крайней мере, для myMethod.bind(this) :

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

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

Использовать внутри шаблона функцию bind - плохая идея. bind function создает новую функцию при каждом вызове. Таким образом, вы будете создавать новую функцию при каждом обнаружении изменений. лучше назначить стрелочную функцию свойству класса:

Машинопись
myMethod = (param1: any, param2: any) => {
// логика метода
}

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

@ andrius-pra Хорошая идея, я сейчас воспользуюсь этим, спасибо.

Извините всех, что нам потребовалось так много времени, чтобы решить эту проблему. Приведенный выше PR должен исправить это.

Эта проблема была автоматически заблокирована из-за бездействия.
Сообщите о новой проблеме, если вы столкнулись с аналогичной или связанной проблемой.

Узнайте больше о нашей политике автоматической блокировки разговоров .

_Это действие было выполнено автоматически ботом. _

Была ли эта страница полезной?
0 / 5 - 0 рейтинги