Vscode-ng-language-service: 未知方法.bind

创建于 2017-05-09  ·  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)"

一切正常,仅在编辑器中运行时,我看不到任何错误:

[角度]未知方法“绑定”

所有41条评论

我刚刚在Angular Language Service和VS Code 1.13中看到了这一点。 将(save())方法添加到hero-detail-component.html时,会发生在Heroes Tutorial中

代码功能正常,但是即使方法很明显,也会显示红色的波浪线。

@bkbonner我无法使用https://angular.io/generated/zips/toh-pt6/toh-pt6.zip重现此内容。您对此显示进行了修改吗?

我可以尝试发送我的代码库。 让我看看您是否还有其他不同之处,可以使它正常工作。

@chuckjaz 。 因此,如果我去修改.ts文件并删除save()方法,然后转到相应的html文件并修改html文件中的方法名称调用,则它会带有下划线。 如果我将方法重新添加到.ts一侧,然后返回到.html文件,则弯曲的行会一直保留,直到我单击ctrl + space并在下拉列表中选择方法选项之一。

我不确定这是否是以前的行为,但也许是触发方法存在性验证的方式导致了令人困惑的结果。

我提供了一个视频来显示它的外观: https :

我也面临着同样的问题...

我在模板中使用.bind存在相同的问题。

它可以工作,但是会出现错误。

在这里+1同样的问题

有解决方案吗?

这里也+1!

+1个完全相同的问题。 任何更新?

.bind(this)错误相同。

确认在Angular语言服务的VS Code中仍在发生。 离子3,角度5。

在VS Code 1.24.1中扩展0.1.9中的'hasError'也发生了:

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

抱怨hasError不是函数,尽管它是函数(在Angular窗体的AbstractControl类中)。

编辑:尽管可以通过添加“!”来解决因此:
<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#disabling-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代码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)"

一切正常,仅在编辑器中运行时,我看不到任何错误:

[角度]未知方法“绑定”

我也一样。

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

有什么办法可以压制此警告,而不是每个人都说我有同样的问题?

尝试在这样的函数名称后添加分号


测试按钮

这似乎消除了警告。

老实说,我不知道这是否仍然是一个问题。
从那时起,VS Code和ALS进行了很多更新,而且很长时间以来我都没有看到此警告...

是的,这仍然是一个问题。
image

VS Code关于:

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

试穿; 之后.2019年2月18日上午5 09,Rafael [email protected]写道:是的,这仍然是一个问题。

VS Code关于:
版本: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 Code关于:

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

这里同样的问题:-/有解决方案吗?

带有角度7显示的+1带垫自动完成功能
image

工作正常,但警告

@multilexus是正确的我正在VS代码1.31.1中使用Angular 7

仍然是一个问题。 任何新闻?

我也一样。

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

这样写:-
[myFun] ='handleFun'
---在HTML中

this.handleFun = this.myService.myFunc.bind(myService);
-在ts文件中

是的,这仍然是一个问题。
image
VS Code关于:

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

这里同样的问题:-/有解决方案吗?

这样写:-
(click)='handleFun'
---在HTML中

this.handleFun = this.setLanguage.bind(this,language);
-在ts文件中

带有角度7显示的+1带垫自动完成功能
image

工作正常,但警告

这样写:-
[displayWith] ='displayFun'
---在HTML中

this.displayFun = this.displayFun.bind(this);
-在ts文件中

在Angular 7的<ng-template>中使用$any()方法时遇到此错误。

仍在抱怨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函数在每次调用时都会创建一个新函数。 因此,您将在每次更改检测时创建一个新功能。 最好将箭头函数分配给class属性:

打字稿
myMethod =(param1:任何,param2:任何)=> {
//方法逻辑
}

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

@ andrius-pra好主意,我现在用这个,谢谢。

抱歉,我们花了很长时间解决此问题。 上面的PR应该可以解决它。

由于不活动,此问题已自动锁定。
如果您遇到类似或相关的问题,请提出新的问题。

阅读有关我们的自动对话锁定策略的更多信息。

_此动作已由漫游器自动执行。_

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

mhamri picture mhamri  ·  4评论

Liero picture Liero  ·  3评论

MarcOne68 picture MarcOne68  ·  5评论

seangwright picture seangwright  ·  4评论

daveriedstra picture daveriedstra  ·  3评论