网站搜索

typescript - Angular 7,带有 NgModel 的扩展方法


我有一个 global.d.ts 文件,其中有以下扩展方法声明:

declare global {
    interface Object {
        isEmpty(this: Object): boolean;
    }
}

以及一个具有以下实现的 object-extension 文件:

Object.prototype.isEmpty = function (this: any) : boolean {
    return true;//some logic
};

在 main.ts 中,我导入了 object-extension 文件。扩展方法运行得很好。但是

当我在一个组件中使用 [(ngModel)](在 input 标签中)时,会出现以下错误:

ERROR Error: Uncaught (in promise): Error: @Output isEmpty not initialized in 'NgModel'. Error: @Output isEmpty not initialized in 'NgModel'.
    at createDirectiveInstance (core.js:18560)
    at createViewNodes (core.js:19776)
    at callViewAction (core.js:20092)
    at execComponentViewsAction (core.js:20011)
    at createViewNodes (core.js:19804)
    at createRootView (core.js:19690)
    at callWithDebugContext (core.js:20722)
    at Object.debugCreateRootView [as createRootView] (core.js:20208)
    at ComponentFactory_.push../node_modules/@angular/core/fesm5/core.js.ComponentFactory_.create (core.js:18029)
    at ComponentFactoryBoundToModule.push../node_modules/@angular/core/fesm5/core.js.ComponentFactoryBoundToModule.create (core.js:7812)
    at createDirectiveInstance (core.js:18560)
    at createViewNodes (core.js:19776)
    at callViewAction (core.js:20092)
    at execComponentViewsAction (core.js:20011)
    at createViewNodes (core.js:19804)
    at createRootView (core.js:19690)
    at callWithDebugContext (core.js:20722)
    at Object.debugCreateRootView [as createRootView] (core.js:20208)
    at ComponentFactory_.push../node_modules/@angular/core/fesm5/core.js.ComponentFactory_.create (core.js:18029)
    at ComponentFactoryBoundToModule.push../node_modules/@angular/core/fesm5/core.js.ComponentFactoryBoundToModule.create (core.js:7812)
    at resolvePromise (zone.js:814)
    at resolvePromise (zone.js:771)
    at zone.js:873
    at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:421)
    at Object.onInvokeTask (core.js:14134)
    at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:420)
    at Zone.push../node_modules/zone.js/dist/zone.js.Zone.runTask (zone.js:188)
    at drainMicroTaskQueue (zone.js:595)