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 postgenControl的代码如下。

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/*"
      ]
    }
  },