簡體   English   中英

將 ngModel 而不是 value 綁定到自定義 Angular 指令以進行貨幣輸入

[英]binding ngModel instead of value to a custom Angular directive for currency input

我目前正在使用自定義 mat-input-currency 格式指令來自動將我的字段輸入格式化為貨幣。 npm 存儲庫可在此處找到。

但是,該指令將元素數據綁定到輸入 i 的[value]並且我需要將其 2 路綁定到[(ngModel)]綁定有效,但貨幣格式顯示在首次加載時不顯示,僅單擊輸入然后變得模糊時。 但是,將其綁定到[value]時,會在加載時以貨幣格式顯示它。

這是我從演示中分叉的StackBlitz ,我嘗試編寫 function 可能是為了利用 onload 事件進行輸入,但不確定如何使用 go。 有沒有辦法讓它以 ngModel 格式加載? 該事件似乎沒有在加載中開始。

  <mat-form-field *ngIf="mpPatient.ssissdiawardLetter=='Y'" appearance="standard">
          <mat-label>SSI/SSDI Award Amount</mat-label>
          <input matInput type="text"
         (onload)="onLoadCurrencyEvent($event, mpPatient.ssissdiawardAmount)"
          mvndrMatCurrencyFormat [allowNegative]="false" [currencyCode]="'USD'"
          [(ngModel)]="mpPatient.ssissdiawardAmount"
          (blur)="updateUSAmount($event, mpPatient.ssissdiawardAmount)">
        </mat-form-field>

由於您使用的指令我在 github 中找不到源代碼,所以我不知道這個自定義指令發生了什么。 從您的代碼中,我認為您可以只使用 Angular CurrencyPipe ,它將提供您想要的形式。

<mat-form-field class="example-full-width">
            <input matInput type="text"
      [value]="testvalue | currency:'USD'" />
</mat-form-field>

我為您提供了演示,僅供您參考: https://stackblitz.com/edit/angular-3gatlt?file=src/app/app.component.html

在我發布這個問題 5 分鍾后,我找到了答案。 就像將 ngModel 分解成各個部分一樣簡單。 即屬性綁定和事件綁定。 所以我的[(ngModel)]="mpPatient.ssissdiawardAmount"變成

[value]="mpPatient.ssissdiawardAmount"
(input)="mpPatient.ssissdiawardAmount = $event.target.value"

或凱文張的答案也有效。

希望這可以幫助下一個人。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM