Angular и Ionic - почему эта директива не регистрируется при изменении на ионном входе?

Я пытаюсь заставить эту директиву работать с ионным вводом, однако у меня есть две проблемы, которые я не знаю, как решить:

1 - Невозможно загрузить маску, когда показан ионный вход. - Проблема в том, что элемент ввода появляется только на дочерних узлах nativeElement через некоторое время, поэтому я не нашел хука для реализации. Чтобы попытаться решить эту проблему, я поместил некоторый код в setTimeout, таким образом я могу найти завернутый ввод:

public ngOnInit():void {
    setTimeout(()=>{
        this._element=this.findElement();
        resolvedPromise.then(() => this._applyValueChanges());
    },1000);
}
findElement():any{
    if (this._elementRef.nativeElement.tagName === 'INPUT') {
        return this._elementRef.nativeElement
    } else {
        let index;
        for(index=0;index<this._elementRef.nativeElement.childNodes.length;index++)
            if (this._elementRef.nativeElement.childNodes[index].tagName === 'INPUT')
                return this._elementRef.nativeElement.childNodes[index];
    }
}

2 - Другая проблема заключается в том, что метод registerOnChange никогда не вызывается, поэтому я не могу обновить модель, чтобы удалить специальные символы:

public registerOnChange(fn:any):void {
    this._onChange = fn;
    return;
}

Итак, я хотел бы знать: как я могу заставить registerOnChange работать с элементом ионного ввода? Есть ли способ найти обернутый ввод в onInit без использования setTimeout?

1 ответ

  1. Ответ на первый вопрос заключается в том, что вы можете использовать ionViewDidLoad() {} вместо этой функции.
  2. На размытие событие не является частью последней ионной, он был удален, так что вы можете использовать это вместо этого

    это будет работать.

Все это сработало для меня, надеюсь, это сработает и для вас.

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