2017-04-17 1 views
0

J'essaie de créer un composant de pagination, de sorte que dans mes listes, je n'ai pas besoin de répéter beaucoup de code. J'utilise aussi Angular 2 dans la saveur ES5. Ainsi voici mon code:Liaison bidirectionnelle angulaire 2 pour un type complexe de composant personnalisé

app.pagingComponent = ng.core.Component({ 
     templateUrl: '/pathToPagingHtml', 
     selector: 'paging', 
     inputs: ['listParameters'] 
    }).Class({ 
     constructor: function() { 
     } 
    }); 

Et voici comment je l'utilise:

<paging [listParameters]="listParameters"></paging> 

Et bien sûr, je suis sur le point d'améliorer en données dans les deux sens de liaison (banane dans la syntaxe encadré) suivre:

<paging [(listParameters)]="listParameters"></paging> 

Mais comme je change listParameters dans le composant parent, rien ne change à l'intérieur du composant enfant, qui a une syntaxe interplation dans le code HTML de modèle. S'il vous plaît noter que listParameters est un objet, pas une simple propriété, et j'ai

Qu'est-ce qui ne va pas?

Mise à jour:

Voici comment il est utilisé dans d'autres composants, disons par exemple, la liste des employés:

<table id='employeesList'> 
    <!-- showing the list here --> 
</table> 
<paging [(listOptions)]="listOptions"></paging> 

listOptions a ces propriétés: pageNumber, pageSize, sorts qui est un tableau, et filters qui est un tableau aussi.

+0

Que devrait changer dans le composant de l'enfant? S'il vous plaît donner plus de détails – echonax

+0

@echonax, dans le composant enfant nous avons ' {{listOptions.pageNumber}}' par exemple. Ça ne montre rien. –

+0

@SaeedNeamati comment pouvons-nous savoir ce qui ne va pas si vous n'incluez pas les détails? :-) Le composant de pagination est-il l'enfant ou le parent? – echonax

Répondre

0

Votre @Input devrait avoir le même nom que vous avez écrit dans le modèle

modèle parent

<paging [(listOptions)]="listOptions"></paging> 

paging.component.js

inputs: ['listOptions'] 

Pour avoir deux voies liaison, vous devez avoir sortie listOptionsChange en Paging composant

Plunker example