One way to accomplish this is to hook into angular's new component methods i.e. $onChanges and $onInit.
If products.list.component.js does say an API call on the products object which then renders a new $ctrl.results data set.
You could have product-result.js component check the one-way binding for $ctrl.results with the new $onChanges method. $onChanges is called whenever one-way bindings are updated. The method takes in a changes object parameter. The changes object has keys that are names of the bound properties that have changed.
Your code for product-result.js could be
/**
* @ngdoc function
* @name $onInit
* @description on bootstrap for the component check if the value `ctrl.results ` is falsy
*/
$onInit: function $onInit () {
if (!this.results) {
this.showNoDataAvaliable = true;
}
},
/**
* @ngdoc function
* @name $onChanges
* @description when component product-list passes a new value for $ctrl.results, Show the data.
* @param {Object} changes the changes object when any binding property is updated, this is similar to
* having a watch function on $scope.variable
*/
$onChanges: function $onChanges (changes) {
if (changes.data && changes.data.currentValue) {
this.showNoDataAvaliable = false;
//... more code on how to display the data.
}
}
Todd Motto has a great blog post about angular 1.5 component, I recommend you read
https://toddmotto.com/angular-1-5-lifecycle-hooks