не является функцией в Angular 5 - PullRequest
0 голосов
/ 05 мая 2018

Я прохожу учебник, в котором мы сделали следующее:

класс, называемый shopping-cart:

import { ShoppingCartItem } from "./shopping-cart-item";
import { Product } from "./product";

export class ShoppingCart {

    items: ShoppingCartItem[] = [];

    constructor(public itemsMap: { [productId: string]: ShoppingCartItem }) {
        for (let productId in itemsMap) {
            let item = itemsMap[productId];
            this.items.push(new ShoppingCartItem(item.product, item.quantity));
        }
    }

    getQuantity(product: Product) {
        let item = this.itemsMap[product.key];
        return item ? item.quantity : 0;
    }
}

поэтому, если я попытаюсь получить доступ к этой функции getQuantity в html-части через:

shoppingCartLol.getQuantity(productlol);

сказано

getQuantity не является функцией консоли.

когда я пытаюсь сделать это как

shoppingCartLol.items[productlol.key].quantity

это работает!

То есть у меня есть нужный объект, но я не могу использовать эту функцию? Кто-нибудь может объяснить мне это чудо?

1 Ответ

0 голосов
/ 05 мая 2018

Я обнаружил, что иногда инкрементная компиляция моей установки dev не работает (имеется в виду, что у обслуживаемого файла нет метода getQuantity()). Попробуйте полностью остановить сервер разработки (ctrl + c на Mac) и перезапустить его (что должно привести к перекомпиляции всего).

Другие вещи, которые можно попробовать:

  • репликация кода проблемы внутри класса (или вне шаблона) и либо запуск сеанса отладки с точкой останова (если ваша установка dev поддерживает это), либо console.log объекта, чтобы убедиться, что объект действительно соответствует вашим ожиданиям. это.
    • Например, если вы десериализуете свою ShoppingCart из JSON, результирующий объект может выглядеть очень похожим на instanceof ShoppingCart (т. Е. Иметь все те же свойства), но не являться instanceof ShoppingCart. И если это не instanceof класс, у него не будет методов класса
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...