Пользовательский компонент в угловом 6 не распознается: ошибка

Я пытаюсь расширить компонент primeng (6), но я получаю сообщение об ошибке:

Неиспользуемая ошибка: ошибки разбора шаблона: «p-inputMask-my» не является известным элементом: 1 Если «p-inputMask-my» является угловым компонентом, проверьте, что он является частью этого модуля. 2. Если «p-inputMask-my» является веб-компонентом, добавьте «CUSTOM_ELEMENTS_SCHEMA» в «@ NgModule.schemas» этого компонента, чтобы подавить это сообщение.

Вот моя конфигурация:

Декоратор:

import { Component } from '@angular/core';
import "reflect-metadata";
import 'zone.js';

export function CustomComponent( annotation: any ) {
    return function( target: Function ) {
        var parentTarget = Object.getPrototypeOf( target.prototype ).constructor;
        var parentAnnotations = Reflect.getMetadata( 'annotations', parentTarget );
        if ( parentAnnotations ) {
            var parentAnnotation = parentAnnotations[0];
            Object.keys( parentAnnotation ).forEach( key => {
                if ( isPresent( parentAnnotation[key] ) ) {
                    // verify is annotation typeof function
                    if ( typeof annotation[key] === 'function' ) {
                        annotation[key] = annotation[key].call( this, parentAnnotation[key] );
                    } else if (
                        // force override in annotation base
                        !isPresent( annotation[key] )
                    ) {
                        annotation[key] = parentAnnotation[key];
                    }
                }
            } );
        }
        var metadata = new Component( annotation );
        Reflect.defineMetadata( 'annotations', [metadata], target );
    }

    function isPresent( obj: any ): boolean {
        return obj !== undefined && obj !== null;
    }
}

Пользовательский компонент:

import { ElementRef, NgModule, OnInit } from '@angular/core';
import { CustomComponent } from './custom-component.decorator';
import { InputMask } from 'primeng/inputmask';
import { DomHandler } from 'primeng/components/dom/domhandler';
import { CommonModule } from '@angular/common';

@CustomComponent( {
    selector: 'p-inputMask-my',
    parent: InputMask
} )
export class InputMaskMy extends InputMask implements OnInit {

    constructor( public el: ElementRef, public domHandler: DomHandler ) {
        super( el, domHandler );
    }

    ngOnInit() {
    }

    updateModel( e ) {
        var updatedValue = this.unmask ? this.getUnmaskedValue() : e.target.value;
        if ( updatedValue !== null || updatedValue !== undefined ) {
            this.value = updatedValue;
            console.log( this.value );
            if ( this.isCompleted() ) {
                this.onModelChange( this.value );
            }
        }
    }

}

@NgModule( {
    imports: [CommonModule],
    exports: [InputMaskMy],
    declarations: [InputMaskMy]
} )
export class InputMaskMyModule { }

модуль приложения:

import { InputMaskMyModule } from './component/input-mask-my';
@NgModule( {
    declarations: [
...
],
imports: [
InputMaskMyModule,
...
]

component.html:

<p-inputMask-my mask="9.99Ea99" characterPattern="[+-]" [(ngModel)]="rowData.achivedDetectionlimit" (onComplete)="dt.onEditComplete.emit({field: 'achivedDetectionlimit', data: rowData})"></p-inputMask-my>

Что я пропустил?

Я также заметил, что

Ошибка поиска: ошибки синтаксического анализа шаблона: «p-inputMask-my» не является известным элементом: 1. Если «p-inputMask-my» является угловым компонентом, проверьте, что он является частью этого модуля. 2. Если «p-inputMask-my» является веб-компонентом, добавьте «CUSTOM_ELEMENTS_SCHEMA» в «@ NgModule.schemas» этого компонента, чтобы подавить это сообщение.

var parentAnnotations = Reflect .getMetadata ('аннотации', parentTarget);

0
задан 13 August 2018 в 15:01

0 ответов

Другие вопросы по тегам:

Похожие вопросы: