I have main component with this code(without imports):
class AppComponent {
    products = null;
    productsUpdated = new EventEmitter();
    constructor(product_service: ProductService) {
        this._product_service = product_service;
        this._product_service.getList()
            .then((products) => {
                this.products = products;
                this.productsUpdated.emit(products)
            });
    }
}
With template:
    <left-sidenav [productsReceived]="productsUpdated"></left-sidenav>
And component for sorting products:
class LeftSidenavComponent {
    @Input() productsReceived;
    @Output() productsSorted = new EventEmitter();
    categories = []
    constructor(product_list_service: ProductListService) {
        this._product_list_service = product_list_service;
    }            
    ngOnInit() {
        this.productsReceived.subscribe((products) => {
            this.categories = products.map((elem) => {
                return elem.category
            })
        });
    }
}
So when all is drawn, categories array in LeftSidenavComponent is empty.
I think that productUpdated event emitter fires earlier than LeftSidenavComponent subscribes to it, but don't know how to handle that.
 
    