Saya mencoba menjumlahkan nilai yang dimasukkan di kolom mat-table
menggunakan input.
Saya telah membuat tabel dengan 3 kolom: Account Id
, Account Description
dan Value
. Saya juga telah membuat file JSON di folder aset dengan nilai acc_id
dan acc_desc
.
Saya kemudian mengakses nilai-nilai ini di tabel saya untuk masing-masing kolom.
Saya juga telah membuat kolom Value
yang telah saya tetapkan kolom inputnya.
Di sebelah tabel saya mengambil kotak sederhana dengan dua ubin di mana saya ingin mengambil jumlah semua nilai yang dimasukkan di kolom Value
.
account.component.html
<!-- Table starts here -->
<mat-card>
<div class="example-container mat-elevation-z8">
<mat-table #table [dataSource]="dataSource1">
<!-- Account No. Column -->
<ng-container matColumnDef="acc_id">
<mat-header-cell *matHeaderCellDef> Account ID. </mat-header-cell>
<mat-cell *matCellDef="let element">{{element.acc_id}}</mat-cell>
</ng-container>
<!-- Account Description Column -->
<ng-container matColumnDef="acc_des">
<mat-header-cell *matHeaderCellDef> Account Description </mat-header-cell>
<mat-cell *matCellDef="let element">{{element.acc_des }} </mat-cell>
</ng-container>
<!-- Value Column -->
<ng-container matColumnDef="value">
<mat-header-cell *matHeaderCellDef> Value </mat-header-cell>
<mat-cell *matCellDef="let element">
<ng-container>
<input [(ngModel)]="element.value">
</ng-container>
</mat-cell>
</ng-container>
<mat-header-row *matHeaderRowDef="displayedColumns1" ></mat-header-row>
<mat-row *matRowDef="let row; columns: displayedColumns1;" > </mat-row>
</mat-table>
<mat-grid-list cols="2" rowHeight="20:1">
<mat-grid-tile style="align-self: left;"> Total</mat-grid-tile>
<mat-grid-tile>{{calculation()}}</mat-grid-tile>
</mat-grid-list>
</div>
</mat-card>
account.component.ts
import {Component, OnInit} from '@angular/core';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/map';
import { ReactiveFormsModule, FormGroup,FormControl } from '@angular/forms';
import { MatTableDataSource} from '@angular/material';
import { AccountdetailService } from '../accountdetail.service';
@Component({
selector: 'app-account',
templateUrl: './account.component.html',
styleUrls: ['./account.component.scss']
})
export class AccountComponent implements OnInit {
element: string;
value: any;
constructor( private accdetailservice: AccountdetailService ) { }
/* Table Starts here
---------------------- */
displayedColumns1 = ['acc_id', 'acc_des', 'value'];
dataSource1= new MatTableDataSource<Element>(ELEMENT_DATA);
calculation(){
return this.dataSource1.data.reduce((summ, v) => summ += parseInt(v.value), 0)
}
ngOnInit(){
this.accdetailservice.accountdetails().subscribe(data =>
var tempObject = data.map(obj => ({...obj, value: 0}));
this.dataSource1.data = tempObject; );
}
}
const ELEMENT_DATA: Element[] = [];
accountdetails.service.ts
import { Injectable } from '@angular/core';
import { Http } from '@angular/http';
import 'rxjs/add/operator/map';
@Injectable()
export class AccountdetailService {
constructor(private http:Http ) { }
accountdetails()
{
return this.http.get('/assets/accountdetails.json')
.map(result => result.json());
}}
accountdetails.json
[
{
"acc_id": 1001,
"acc_des": "aaa"
},
{
"acc_id": 1002,
"acc_des": "aaa"
}
]
app.module.ts
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { ReactiveFormsModule,FormsModule } from '@angular/forms';
import { HttpModule} from '@angular/http';
import { AppMaterialModule } from './app-material.module';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { AccountComponent } from './account/account.component';
import { AccountdetailService } from './accountdetail.service';
@NgModule({
declarations: [
AppComponent,
AccountComponent
],
imports: [
BrowserModule,
AppRoutingModule,
ReactiveFormsModule,
BrowserAnimationsModule,
AppMaterialModule,
FormsModule ,
HttpModule
],
entryComponents:[ ],
providers: [ AccountdetailService],
bootstrap: [AppComponent]
})
export class AppModule { }
Saya dapat menjumlahkan nilai yang dimasukkan di kolom nilai, tetapi saya mendapatkan kesalahan di bawah ini.
adakah yang bisa memberi tahu saya apa yang hilang dalam sintaksis saya pada kode berikut...?
ngOnInit(){
this.accdetailservice.accountdetails().subscribe(data =>
var tempObject = data.map(obj => ({...obj, value: 0}));
this.dataSource1.data = tempObject; );
}
Ini keluaranku..