Возвращает длину массива json из наблюдаемой после завершения функции подписки

После рендеринга вы можете указать высоту, как показано ниже, и указать высоту для соответствующих реагирующих компонентов.

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, будет назначена высота.

2
задан Marium Malik 4 March 2019 в 15:32
поделиться

3 ответа

Вместо подписки на Обсерваторию. Вы можете преобразовать 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)});
}
0
ответ дан Josef Katič 4 March 2019 в 15:32
поделиться

Прямо сейчас я думаю о двух вариантах: первый, чтобы вернуть вызов сервера и подписаться на него в вашем компоненте или иным образом, чтобы вернуть обещание.

Первый вариант:

В вашем компоненте:

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
        ]
    });
 }
0
ответ дан Batajus 4 March 2019 в 15:32
поделиться

Попробуйте это и, пожалуйста, дайте мне знать, если есть какие-либо проблемы

 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;
 }
0
ответ дан Anusha_Mamidala 4 March 2019 в 15:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: