无法分配到'总计'因为它是函数的常量或只读属性get total(){}

时间:2018-03-29 10:45:02

标签: angular typescript

当我在项目中使用此命令ng build --prod时显示此错误。 无法分配到'总计'因为它是函数get total(){}

的常量或只读属性

我的功能是:

  get total() {
         return this.products
          .map(p => p.Unit_price * p.Quantity)
          .reduce((a, b) => a + b, 0);
      }

HTML:

<form [formGroup]="addsale" (ngSubmit)="onaddsale()" >
  <div class="row">
    <div class="input-field col s2" style="float: right;">
      <label for="total">Total {{total}} ALL</label>
      <input formControlName="total" id="total" type="text" class="validate" [value]="total" [(ngModel)]="total">
    </div>
    <div class="input-field col s2" style="float: right;">
      <label for="amount_paid">Amount Paid:</label>
      <input formControlName="amount_paid" id="amount_paid" [value]="total" type="text" class="validate" [(ngModel)]="total">
    </div>
    <div class="input-field col s2" style="float: right;">
      <label for="total">Subtotal</label>
      <input formControlName="Subtotal" id="Subtotal" type="text" class="validate" [value]="total" [(ngModel)]="total">
    </div>
  </div>
</form>

表格形式:

   this.addsale = this.fb.group({
      'amount_paid': new FormControl('', Validators.required),
       'Subtotal': new FormControl('', Validators.required),
      'total': new FormControl('', Validators.required)
    });

请问好吗?

2 个答案:

答案 0 :(得分:2)

使用--prod标记构建时,使用aot进行实际构建,这比使用ng服务时要严格得多。

我认为这是因为[(ngModel)]对所有字段都设置为total,并且使用2路绑定(get / set);您与total getter

发生冲突

由于计算总数,我不认为对total进行双向绑定是有意义的,它应该是只读的。付款小计/金额不应使用total表示ngModel

答案 1 :(得分:1)

我遇到了同样的问题,但我的情况是指表格的有效状态。

<-- HTML-->
<button 
    type="submit"
    [(disabled)]="!loginForm.valid">
    Enter
</button>

对我有用的是将支票分配给新的公共变量。

<-- JS -->
public validForm: boolean;

 ngOnInit() {
     this.validForm = this.loginForm.valid;
 }
<-- HTML -->
<button 
    type="submit" 
    [(disabled)]="!validForm">
    Entrar
</button>

<---编辑--->

如果我们仅使用一种方法进行数据绑定,也可以使用

<button 
    type="submit" 
    [disabled]="!loginForm.valid">
    Entrar
</button>