После рендеринга вы можете указать высоту, как показано ниже, и указать высоту для соответствующих реагирующих компонентов.
render: function () {
var style1 = {height: '100px'};
var style2 = { height: '100px'};
//window. height actually will get the height of the window.
var hght = $(window).height();
var style3 = {hght - (style1 + style2)} ;
return (
<div className="wrapper">
<Sidebar />
<div className="inner-wrapper">
<ActionBar style={style1} title="Title Here" />
<BalanceBar style={style2} balance={balance} />
<div className="app-content" style={style3}>
<List items={items} />
</div>
</div>
</div>
);`
}
или вы можете указать высоту каждого реагирующего компонента с помощью sass. Задайте сначала 2 основных элемента основного компонента реакции с фиксированной шириной, а затем высоту главного div третьего компонента с авто. Поэтому, основываясь на содержании третьего div, будет назначена высота.
Вместо подписки на Обсерваторию. Вы можете преобразовать Observable
в Promise
на .toPromise()
. Вам также понадобится сделать функцию async
и поставить await
перед функцией, которую вы применили .toPromise()
. Затем массив products будет храниться в переменной, называемой products, и после этого вы сможете использовать ее в обычном режиме.
Пример:
public async getCountofProducts() {
const products = await this.productService.getAllProducts().toPromise();
if(products !== null) {
return products.length;
} else {
return 0;
}
}
Когда вы вызываете эту функцию, вы должны вызывать ее в функции async
с помощью await
раньше, если вы не вызываете ее так, как это вернет только ZoneAwarePromise. Вместо этого вы также можете получить доступ к значению типа Promise
, используя .then()
.
//You can call it like this
public async someFunction() {
console.log(await this.getCountofProduts);
}
//OR
public someFunction() {
this.getCountofProducts().then((result) => {console.log(result)});
}
Прямо сейчас я думаю о двух вариантах: первый, чтобы вернуть вызов сервера и подписаться на него в вашем компоненте или иным образом, чтобы вернуть обещание.
Первый вариант:
В вашем компоненте:
public getItems()
{
this.productService.getAllProducts().subscribe((products: Array<any>) => {
this.items=[
count: products ? products.length : 0;
]
});
}
Второй вариант:
товар .service.ts
getAllProducts(): Promise<any[]> {
return this.http.get('YOUR_URL').toPromise();
}
Ваш звонок будет выглядеть следующим образом.
public getCountofProducts() {
return this.productService.getAllProducts().then
(
(products) => {
if (products!= null) {
this.productsLength = products.length;
return this.productsLength;
}
}
);
}
И в вашем компоненте:
public getItems()
{
this.getCountofProducts().then((len:number) => {
this.items=[
count: len
]
});
}
Попробуйте это и, пожалуйста, дайте мне знать, если есть какие-либо проблемы
public getCountofProducts() {
this.productService.getAllProducts().subscribe
(
(products) => {
if (products!= null) {
this.getCount(products);
return this.productsLength;
}
else{
return 0;
}
}
);
}
public getCount(products){
this.productsLength=this.products.length;
}