J'ai un objet JSON que je récupère d'une API, voici un échantillon.
[checked]="acl.allowed[pr.systemName][cr.id]"
3 Réponses :
Vous pouvez utiliser enchaînement optionnel et cela devrait corriger le problème
<tr *ngFor="let pr of acl?.availablePermissions">
<td>
<span>{{pr?.name}}</span>
</td>
<td *ngFor="let cr of acl?.availableApplicationRoles" [hidden]="cr?.id == '0'">
<input
attr.data-role-id="{{cr?.id}}"
attr.data-permission-name="{{pr?.name}}"
attr.data-system-name="{{pr?.systemName}}"
[checked]="acl.allowed[pr?.systemName][cr.id]"
class="allow allow_{{cr?.id}}"
type="checkbox" />
</td>
</tr>
essayé, il n'a pas aidé, toujours dans une boucle donnant des erreurs dans la console avec la même erreur sur la même ligne
Avez-vous mis le ? code> après le Cr aussi? Parce que l'erreur que vous obtenez signifie que cr.id code> est indéfini lorsque vous essayez de le faire correspondre à "0", vous ne devez pas obtenir cette erreur si vous utilisez une chaîne facultative [cachée] = " cr? .Id == '0' " code>
Oui, voici ma ligne
S'il vous plaît mettre le? Sur toutes les références à CR et à PR comme indiqué dans ma réponse - et veuillez mettre à jour votre question avec l'objet exact que vous recevez de console.log (acl.availableApplicationRoles) code>
ajouté, n'était toujours pas aidé, même erreur. L'objet est exactement ce que je reçois de l'API.
Vous êtes absolument manquant certaines informations cruciales - si l'objet est comme vous le dites et que vous avez mis le ? Code> Ce qui précède doit fonctionner
Recevez-vous une chaîne JSON? ou un objet? Conservez-vous la chaîne JSON en un objet utilisable? json.parse (données) code>?
J'ai ajouté de vous connecter à Ngoninit et il se connecte correctement tout et je peux voir sa journalisation dans la console avant que Angular rend la page, et que l'erreur se passe une fois que le Ngoninit est fini.
auto.acl.availableVermissions.foraach (fonction (article) {console.log (item.name); self.acl.availableApplicationRoles.foraach (fonction (CR) {console.log (cr.Id);});});});});
Je n'utilise pas Analys, c'est le type de retour renvoyer cela.http.get
Vous cachez le TD sur cr.id == '0' alors qu'il est masqué, mais il crée toujours l'élément TD et l'instruction exécutera, votre erreur est d'obtenir une erreur: p> car cr.id est 0 dans ce cas: p> Vous devez ajouter une condition ou utiliser * ngif avec conteneur. p> p>
J'ai essayé de envelopper avec * NGIF et je n'ai toujours pas travaillé, même erreur et ça va au TD, j'ai même pris l'attribut caché et échangé avec un NGIF, n'a pas fonctionné.
J'ai pu arriver au bas de la question et le problème est avec le filtre, autorisé n'est pas un tableau, son objet, et l'objet a une liste d'objets que je cherche à filtrer, jetez un coup d'œil à la Objet autorisé que j'ai partagé dans la question et que je vois comment je souhaite obtenir un objet avec le nom correspondant à ce qui correspond à la foreach, mais je ne suis pas défini parce que ce n'est pas la bonne façon de le faire, à ce moment-là, je ne suis pas sûr de savoir comment filtrer cela.
OK, donc j'ai enfin pu le faire fonctionner en utilisant le code suivant.
<tr *ngFor="let pr of acl.availablePermissions let i = index">
<td scope="col">
<span>{{pr.name}}</span>
</td>
<td *ngFor="let cb of aclPermissions[i].cb">
<input attr.data-role-id="{{cb?.roleId}}"
attr.data-permission-name="{{pr?.permissionName}}"
attr.data-system-name="{{cb?.systemName}}"
class="allow allow_{{cb?.roleId}}"
type="checkbox"
[checked]="cb?.isChecked" />
</td>
Cela signifie que ACL.AVAILABLABLEAPPLICATIONROLES est indéfini (le premier appel de NGFA échoue comme le premier élément de ce dernier ne peut pas être consulté). Êtes-vous sûr que ACL.AVAILAILABLABLEAPPLICATION est en train de remplir?
est cette chaîne cr.id ou numéro ??
Bien que ce ne soit pas la réponse, juste une suggestion. Etant donné que ES2015 est recommandé d'utiliser
let code> au lieu devar code> carlaisser code> est considéré comme plus sûr que ce dernier. TytscriptLang.org/docs/handbook/... < / a>@Ramana c'est une corde
@johnmikelridzz j'ai vérifié dans la console, il a les données, ce n'est pas indéfini
@Solstein s'il vous plaît vérifier ma réponse - cela corrigera le problème
@Smokeydawson a essayé cela, n'a pas aidé
@Smokeydawson Même erreur, sur la même ligne
@Smokeydawson J'ai pu arriver au bas de la question et le problème est avec le filtre, autorisé n'est pas un tableau, son objet, et l'objet a une liste d'objets que je cherche à filtrer, jetez un coup d'œil À l'objet autorisé que j'ai partagé dans la question et vois comment je souhaite obtenir un objet avec le nom correspondant à ce qui correspond à la foreach, mais je suis indéfini car ce n'est pas la bonne façon de le faire, à partir de maintenant, je ne suis pas sûr Comment filtrer cela.