I've got a simple contactList component, which has 2 bindings: contacts and onRemove.
- contactsis just an array of contacts to display
- onRemoveis a callback function
app
  .component('contactList', {
    template: 
      `<div ng-repeat="c in $ctrl.contacts">
         {{c.name}}
         <div ng-click="$ctrl.onRemove({contact: c})">Remove</div>
       </div>`,
    bindings: {
      contacts: '<',
      onRemove: '&'
    },
    controller: function() {}
  })
I use this component multiple times within my app. And the onRemove callback can behave differently, depending on where the contactList component is getting used. Example:
- contactMainView(= component) displays a search bar and the resulting list of contacts using the- contactListcomponent.- onRemovewill delete the contact from the database.
- groupMembersViewdisplays all contacts belonging to the given group using the- contactListcomponent. Here it shouldn't be possible to remove a contact, though- onRemovewill not be set.
Ideas:
First I thought, that I could use an ng-if="$ctrl.onRemove" but that doesn't work, because onRemove is never undefined within contactList component. console.log(this.onRemove) always prints: function(locals) { return parentGet(scope, locals); }
Of course I could use another showRemove: '@' binding, but that doesn't look DRY to me.
Do you have any idea or some better solution to get things done?
 
     
     
     
    