Ich bin neu in Angular2/4 und eckigen Typoskript. Ich möchte alle Kontrollkästchen für 3 Sekunden deaktivieren, wenn ein Benutzer auf ein Kontrollkästchen klickt, um einen Server-Anruf zu tätigen.Eckig 2/4. So deaktivieren Sie ein Kontrollkästchen für einige Sekunden, wenn ein Kontrollkästchen angeklickt wird
Wie kann ich das in Angular 2/4 tun? Ich habe den Code-Schnipsel unten enthalten:
wiz.component.html
<div class="table-header header-eligible">
<div class="select-all">
<md-checkbox name="chkSelectAll" [(ngModel)]="isSelectAll" (change)="onSelectAll()"></md-checkbox>
</div>
<div>Account Number</div>
<div>Client Name</div>
<div>Account Type</div>
<div class="datatype-numeric">Long Market Value</div>
<div class="datatype-numeric">Estimated Borrowing Power</div>
</div>
<div *ngFor="let e of eligibleArray; let i = index;" >
<div class="table-content content-eligible">
<div>
<md-checkbox name="chkSelect{{i}}" [(ngModel)]="e.isSelected" (change)="onSelect(i)"></md-checkbox>
</div>
<div class="link" (click)="openAccountPopUp(i)">{{e.accountNumber}}</div>
<div>{{e.clientName}}</div>
<div>{{e.accountType}}</div>
<div class="datatype-numeric">{{e.marketValue | currency:'USD':true}}</div>
<div class="datatype-numeric">{{e.advanceAmount | currency:'USD':true}}</div>
</div>
</div>
wiz.component.ts
initSelected(): void {
if(this.advisorClientModel.pledgedAccounts.length == 0)
{
// Init first time from source array
for(let e of this.eligibleArray)
{
// select all accounts by default, first time in
e.isSelected = true;
}
this.isSelectAll = true;
}
else
{
for(let e of this.eligibleArray)
{
if(this.advisorClientModel.pledgedAccounts.includes(e.accountNumber))
e.isSelected = true;
}
let selectedCount = this.advisorClientModel.pledgedAccounts.length;
if(selectedCount == this.eligibleArray.length)
{
this.isSelectAll = true;
}
}
this.updateSelectedTotals();
}
updateSelectedTotals(): void {
this.invalidAccountsMessage = "";
let marketTotal:number = 0;
let advanceTotal:number = 0;
for(let e of this.eligibleArray)
{
if(e.isSelected)
{
marketTotal = Number(marketTotal) + Number(e.marketValue);
advanceTotal = Number(advanceTotal) + Number(e.advanceAmount);
}
}
this.eligibleSelected.marketValue = marketTotal;
this.eligibleSelected.advanceAmount = advanceTotal;
}
onChangeAmount(): void {
// Apply Amount Format
let sIn: string = this.loanAmountString;
let sOut: string = this.inputMaskService.getFormatAmount(sIn);
if(sIn != sOut)
{
// Only update model if format rules modified it
this.loanAmountString = sOut;
}
sOut = sOut.replace(/\D/g,'');
if(sOut.length > 0)
{
let n: number = Number(sOut);
if(n < 100000) {
this.invalidAmountMessage = "Amount must be >= 100K";
this.isValidAmount = false;
}
else if (n > 10000000) {
this.invalidAmountMessage = "Amount must be <= 10 Million";
this.isValidAmount = false;
}
else
{
this.loanAmount = n;
this.isValidAmount = true;
}
}
else
{
this.isValidAmount = false;
}
}
onChangeMax(): void {
this.loanAmountString = "";
this.loanAmount = 0;
if(this.isMaximumAmount)
{
this.isValidAmount = true;
}
else
{
this.isValidAmount = false;
}
}
onSelect(i:number): void {
this.isSelectAll = (this.numberOfSelectedAccounts() == this.eligibleArray.length);
this.updateSelectedTotals();
}
onSelectAll(): void {
for(let e of this.eligibleArray)
{
e.isSelected= this.isSelectAll;
}
this.updateSelectedTotals();
}
numberOfSelectedAccounts(): number {
let selectedCount = 0;
for(let e of this.eligibleArray)
{
if(e.isSelected) selectedCount++;
}
return selectedCount;
}
implementieren Ich denke, die Frage zu einem einmal gedacht wurde auf Klick (setTimeout()) deaktivieren aktivieren. Ihr Beispiel registriert einen setInterval(), der alle 3 Sekunden ausgelöst wird, was zu unerwartetem Verhalten führt. – BogdanC
Danke für den Fang, ich wollte "Timeout" in den Code schreiben, aber versehentlich 'setInterval' geschrieben, ich habe es korrigiert :) – Nehal