我有一个简单的注册组件,除了将表单提交到必杀技之外什么也没做。但是,IntelliJ建议onSubmit
可以是static
。如果我将签名更改为static
我无法调用该方法 - 至少据我所知 - 所有答案都表明无法从模板中调用静态组件方法。
显然IntelliJ没有意识到,我实际上是在模板中调用此方法,因此错误地建议制作方法static
。
是否有解决方法或者我是否必须接受该警告?
以下是一个例子:
组件:
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-register',
templateUrl: './register.component.html',
styleUrls: ['./register.component.css']
})
export class RegisterComponent implements OnInit {
data: any;
constructor() {
this.data = {
username: ''
};
}
// WARNING: Method can be static
onSubmit(event) {
alert('Submitting ..');
}
ngOnInit() {
}
}
模板:
<form (ngSubmit)="onSubmit($event)">
<mat-grid-list cols=1>
<mat-form-field>
<input matInput placeholder="Username" [(ngModel)]="data.username" name="uname">
</mat-form-field>
<mat-grid-list cols=2>
<button mat-button type="submit">Ok</button>
<button mat-button>Cancel</button>
</mat-grid-list>
</mat-grid-list>
</form>
答案 0 :(得分:2)
Intellij建议将这种方法设置为静态,因为它们不会触及实例的任何状态。
您可以将onSubmit方法设为静态:
static onSubmit(event) {
alert('Submitting ..');
}
然后intellij将警告您将此方法放在类的非静态方法之前。
然后,您需要在组件中提供一个getter,以便像您一样从模板中调用静态成员。
onSubmit = RegisterComponent.onSubmit;
所以,你的代码应该是:
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-register',
templateUrl: './register.component.html',
styleUrls: ['./register.component.css']
})
export class RegisterComponent implements OnInit {
data: any;
onSubmit = RegisterComponent.onSubmit;
static onSubmit(event) {
alert('Submitting ..');
}
constructor() {
this.data = {
username: ''
};
}
ngOnInit() {
}
}
这会有效,而且你没有任何警告。
答案 1 :(得分:1)
抑制此警告的最快方法是使用警告上的alt输入快捷方式-或当光标位于引起警告的代码中时,单击灯泡-然后使用向右箭头键触发相关警告下拉菜单,其中包含禁止显示警告的选项。
答案 2 :(得分:0)
您可以从pereferences或
中禁用它@SuppressWarnings("unused")
onSubmit(event) {
alert('Submitting ..');
}
答案 3 :(得分:0)
对于角度项目,webstorm IDE出现了类似的错误。我通过导航到以下位置来禁用它:
设置->首选项(Ctrl + S)->检查-> Javascript->常规->取消选中规则(方法可以是静态的)