Вы забыли подписаться на наблюдаемое.
Пожалуйста, измените this.products = this.api.get('http:/api/products').map((res:Response) => res.json());
в
this.subscription = this.api.get('http:/api/products').map((res:Response) => res.json()).subscribe(data => this.products = data);
Также рассмотрите возможность изменения #product of products ; #i = index
на let product of products"
в большинстве примеров, в руководствах используется let
. Если вы не используете i
из #i = index
позже в коде, рассмотрите возможность его удаления, чтобы сделать код более простым.
Редактировать: также добавьте новое свойство в компоненте private subscription: Subscription
и импортируйте Subscription
из RxJS
. Позже не забудьте отписаться от ngOnDestroy
или после this.products = data;
.
Предполагая, что private api: ApiService
внутри системы вызывает http
Angular.
Или перейдите на шаблон let product of products | async
и сохраните код машинописи таким, каким он был у вас изначально, без изменений. | async
подпишется на наблюдаемые продукты и автоматически откажется от подписки. Также {{ product.title }
является правильным синтаксисом и не products
.