Model Ionic 2如何将动态添加的div文本绑定到模型?

Model Ionic 2如何将动态添加的div文本绑定到模型?,model,ionic2,bind,directive,Model,Ionic2,Bind,Directive,我需要完成的是将一个离子输入绑定到模型,但显示一个格式化的值,同时将原始值保留在模型中 文本掩码在这里不作为afaik应用,它也会转换原始值 因此,我找到了一个解决方案,在ion输入上添加了一个指令,它隐藏了子输入,并插入了一个包含格式化值的div 一切正常,只是如果模型在别处修改,div不会自动更新 问题:如何将div动态绑定到模型(通过调用formatNumber函数) 我探索了一些“可观察”的方法,但没有成功 下面是我用来管理输入和div的(简化的)代码示例 home.html <i

我需要完成的是将一个离子输入绑定到模型,但显示一个格式化的值,同时将原始值保留在模型中

文本掩码在这里不作为afaik应用,它也会转换原始值

因此,我找到了一个解决方案,在ion输入上添加了一个指令,它隐藏了子输入,并插入了一个包含格式化值的div

一切正常,只是如果模型在别处修改,div不会自动更新

问题:如何将div动态绑定到模型(通过调用formatNumber函数)

我探索了一些“可观察”的方法,但没有成功

下面是我用来管理输入和div的(简化的)代码示例

home.html

<ion-content padding>
  <ion-item>
    <ion-label stacked>Label</ion-label>
    <ion-input item-content myDirective [(ngModel)]="data.field01"></ion-input>
  </ion-item>
</ion-content>
myDirective.ts

import { Directive, ElementRef } from '@angular/core';
@Directive({
  selector: '[myDirective]'
    host: {
        '(click)': 'onClick()'
    }
})
export class MyDirective {
  public formattedValue: string;
  constructor( private elemRef: ElementRef,
                             private renderer: Renderer
                         ) {
  }
    ngOnInit() {
        setTimeout(() => {
            let myInput = this.elemRef.nativeElement.children[0];
            this.myInput.hidden = 'true';
            let myDiv = document.createElement("div");
            this.myDiv.className = this.myInput.className;
            this.myDiv.innerText = 'mydiv';
            this.elemRef.nativeElement.appendChild(this.myDiv)
        }, 0);
    }
    onClick() {
            this.showPicker();
    }
    ...
}
其他信息:

  • 输入值是通过一个我没有放在这里的自定义选择器编辑的 =>工作正常
  • 当picker关闭时,picker=>会将格式化的值直接应用到myDiv

我建议使用a而不是方向。我们似乎不能在输入端使用管道。我错了吗?
import { Directive, ElementRef } from '@angular/core';
@Directive({
  selector: '[myDirective]'
    host: {
        '(click)': 'onClick()'
    }
})
export class MyDirective {
  public formattedValue: string;
  constructor( private elemRef: ElementRef,
                             private renderer: Renderer
                         ) {
  }
    ngOnInit() {
        setTimeout(() => {
            let myInput = this.elemRef.nativeElement.children[0];
            this.myInput.hidden = 'true';
            let myDiv = document.createElement("div");
            this.myDiv.className = this.myInput.className;
            this.myDiv.innerText = 'mydiv';
            this.elemRef.nativeElement.appendChild(this.myDiv)
        }, 0);
    }
    onClick() {
            this.showPicker();
    }
    ...
}