Lorsque vous essayez de faire une recherche clé/valeur sur une carte dans mon contrôleur dactylographiée, je reçois l'erreur suivante:RECEVANT « TypeError: this.cart.cases.get est pas une fonction », même si la fonction existe
TypeError: this.cart.cases.get is not a function
Cependant, « get » est certainement défini pour une carte Tapuscrit. Le contrôleur appelant ressemble à ceci:
export class CaseController{
case: Case;
cart: IShoppingCart;
constructor(
private $location: ng.ILocationService,
private $mdDialog: ng.material.IDialogService,
private $scope: any,
private CaseService : CaseService,
private shoppingCartService : ShoppingCartService
){
"ngInject";
var self = this;
this.cartJSON = "";
this.case = self.CaseService.getCase()
this.cart = shoppingCartService.getCart();
}
public addDocument(doc:Document, caseForDoc:Case) {
var myCase:Case = this.cart.cases.get(caseForDoc.caseId);//Error here
if(!myCase){
myCase = new Case(
caseForDoc.id,
caseForDoc.caseNumber,
caseForDoc.caseStyle,
caseForDoc.baseType,
caseForDoc.status,
caseForDoc.fileDate,
caseForDoc.caseId,
caseForDoc.location);
}
myCase.documents[doc.id.toString()] = doc;
this.cart.cases.set(myCase.caseId, myCase);
this.cartJSON = JSON.stringify(this.cart);
this.shoppingCartService.updateCart(this.cart);
}
}
"cas" est une carte, qui est défini dans IShoppingCart, qui lookslike ceci:
export class ShoppingCart implements IShoppingCart {
public cases: Map<number, Case>; //Mapped to caseid
constructor(
public id: number,
public userIdentifier: string,
public emailAddress: string,
public convenienceFee: number,
public orderTotal: number,
) {
this.cases = new Map<number,Case>();
}
Tout le code compile bien. Des idées?
EDIT: Les addDocuments est appelé dans une vue, dans la partie ci-dessous:
<md-card ng-repeat="(docID, doc) in vm.case.documents" layout="column"
class="table-card" style="margin-top:0; margin-bottom:0; border-top:1px solid #ddd; border-bottom:1px solid #ddd;">
<md-card-content>
<div layout="row">
<div flex-sm="100" flex-md="50" flex-lg="33" flex-gt-lg="33">
<tt-label-container>
<md-button class="md-primary md-hue-1" ng-click="vm.previewDoc($event)">
{{doc.documentName}}
</md-button>
</tt-label-container>
</div>
<div flex-sm="100" flex-md="50" flex-lg="33" flex-gt-lg="33">
<tt-label-container>
<div>{{doc.date | date: 'MM/dd/yyyy'}}</div>
</tt-label-container>
</div>
<div flex-sm="100" flex-md="50" flex-lg="33" flex-gt-lg="33">
<tt-label-container>
<div>{{doc.numberOfPages}}</div>
</tt-label-container>
</div>
<div flex-sm="100" flex-md="50" flex-lg="33" flex-gt-lg="33">
<tt-label-container>
<div>{{doc.price | currency: '$'}}</div>
</tt-label-container>
</div>
<div flex-sm="100" flex-md="50" flex-lg="33" flex-gt-lg="33">
<tt-label-container>
<div>
<md-button class="md-raised md-primary" ng-click='vm.addDocument(doc, vm.case)'>
<span>{{add.selected ? 'Remove' : 'Add'}}</span>
</md-button>
</div>
</tt-label-container>
</div>
</div>
</md-card-content>
</md-card>
Qui appelle 'addDocument'? –