我在应用程序中遇到此错误:forgot-password.component.ts(44,7): error TS2742: The inferred type of 'username' cannot be named without a reference to '.../node_modules/@angular/forms/forms'. This is likely not portable. A type annotation is necessary.
import { Component, Output, EventEmitter } from '@angular/core';
import { Router } from '@angular/router';
import { FormGroup, FormBuilder, Validators } from '@angular/forms';
import { User } from '../../models';
import { ValidateUsername } from '../../validators/userid-validator';
@Component({
selector: 'app-forgot-password',
templateUrl: './forgot-password.component.html',
styleUrls: ['./forgot-password.component.scss']
})
export class ForgotPasswordComponent {
forgotPasswordForm: FormGroup;
@Output() resetPassword: EventEmitter<any> = new EventEmitter<any>();
@Output() onSubmit: EventEmitter<User> = new EventEmitter<User>();
constructor(private formBuilder: FormBuilder, private router: Router) {
this.forgotPasswordForm = this.formBuilder.group({
username: ['', [Validators.required, ValidateUsername]]
});
}
get username() { return this.forgotPasswordForm.get('username'); }
passwordToken(event$) {
this.onSubmit.emit(event$.value);
}
}
错误发生在此行:
get username() { return this.forgotPasswordForm.get('username'); }
5条答案
按热度按时间pkbketx91#
您需要明确属性的返回类型。
forgotPasswordForm
是FormGroup,其get()方法返回具有以下子类的AbstractControl子类
wlzqhblo2#
当它说
这可能是不可移植的。需要类型注解。
有时你需要检查你的
tsconfig.json
,看看“baseUrl”,“paths”和链接的包是否有问题。但在本例中,TS指责您没有键入它,因为它在您的ts配置中,所以您可以将其键入为“any”,为它创建一个接口,或者根据需要键入,在本例中,键入为string。
ejk8hzay3#
在我的案例中,我发现了以下修复:
#1将引用导出为类型
type
。_ObjectId
作为名称,以避免IDE自动完成它。#2修复返回类型
这是最糟糕的解决方案!
使用返回类型
any
,例如:function foo(): any
erhoui1w4#
我在使用文件系统syncer(代替npm/yarn链接)时遇到过这种情况。
通过不从依赖文件夹复制
node_modules
文件夹解决了该问题。h79rfbju5#
应该尝试回调类型,就像这样