instanceof returns 在 Angular 库中创建时为 false
instanceof returns false when created in Angular Library
在 Angular 库中创建对象时,instanceof
returns false。
import {
Component,
OnInit
} from '@angular/core';
import {
FormControl,
} from '@angular/forms';
import {genControl} from 'test-lib'; // import a function from my own library.
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss']
})
export class AppComponent implements OnInit{
constructor() {
}
ngOnInit() {
const fcA = genControl(); // Create a FormControl in Angular Library
const fcB = new FormControl('');
if (fcA instanceof FormControl) {
console.log('fcA is instanceof FormControl');
} else {
console.log('fcA is not instanceof FormControl'); // displays this.
}
if (fcB instanceof FormControl) {
console.log('fcB is instanceof FormControl'); // displays this.
} else {
console.log('fcB is not instanceof FormControl');
}
}
}
test-lib
是 Angular 库项目构建为 this post。 genControl
的代码如下。
import {FormControl} from '@angular/forms';
export function genControl(): FormControl {
return new FormControl('');
}
上面代码的输出结果如下。
fcA is not instanceof FormControl
fcB is instanceof FormControl
为什么 fcA
不是 FormControl
的实例?我应该如何修复 fcA
将成为 FormControl
的实例?
Angular 主项目 AppComponent
和 Angular 库 genControl
的版本相同,即 9.1.11.
正如@andriishupta 提到的,这是因为应用程序和库从不同的文件导入 FormControl
。
我应该在 tsconfig.json
中指定 paths
如下。
"compilerOptions": {
:
"paths": {
"@angular/*": [
"./node_modules/@angular/*"
]
}
},
在 Angular 库中创建对象时,instanceof
returns false。
import {
Component,
OnInit
} from '@angular/core';
import {
FormControl,
} from '@angular/forms';
import {genControl} from 'test-lib'; // import a function from my own library.
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss']
})
export class AppComponent implements OnInit{
constructor() {
}
ngOnInit() {
const fcA = genControl(); // Create a FormControl in Angular Library
const fcB = new FormControl('');
if (fcA instanceof FormControl) {
console.log('fcA is instanceof FormControl');
} else {
console.log('fcA is not instanceof FormControl'); // displays this.
}
if (fcB instanceof FormControl) {
console.log('fcB is instanceof FormControl'); // displays this.
} else {
console.log('fcB is not instanceof FormControl');
}
}
}
test-lib
是 Angular 库项目构建为 this post。 genControl
的代码如下。
import {FormControl} from '@angular/forms';
export function genControl(): FormControl {
return new FormControl('');
}
上面代码的输出结果如下。
fcA is not instanceof FormControl
fcB is instanceof FormControl
为什么 fcA
不是 FormControl
的实例?我应该如何修复 fcA
将成为 FormControl
的实例?
Angular 主项目 AppComponent
和 Angular 库 genControl
的版本相同,即 9.1.11.
正如@andriishupta 提到的,这是因为应用程序和库从不同的文件导入 FormControl
。
我应该在 tsconfig.json
中指定 paths
如下。
"compilerOptions": {
:
"paths": {
"@angular/*": [
"./node_modules/@angular/*"
]
}
},