Angular 18 рассчитал не функциюJavascript

Форум по Javascript
Ответить
Anonymous
 Angular 18 рассчитал не функцию

Сообщение Anonymous »

Я использую Angular 18 с сигналами.
My ClosterService < /code> в основном вычисляет цену на основе некоторых параметров.
Строительство с NG Serv < /code> не устраивает никаких ошибок и не делает VSCODE, однако мой браузер бросает следующее: < /p>
ERROR TypeError: this.doorAmount is not a function at Object.calculatePricePerDoor [as computation] (calculation.service.ts:52:48)
< /code>
и мой компонент не загружен.import { computed, Injectable, signal } from '@angular/core';
import {
basePrice,
basePricePerDay,
basePricePerDoor,
minutesPerDoor,
stepPrice,
} from '../consts';

@Injectable({
providedIn: 'root',
})
export class CalculationService {
#price = signal(0);
#basicDoorAmount = signal(0);
#electroDoorAmount = signal(0);
#automaticDoorAmount = signal(0);

doorAmount = computed(this.countDoorAmount);
price = computed(this.#price);
pricePerDoor = computed(this.calculatePricePerDoor);
priceStep = computed(this.calculatePriceStep);
hours = computed(this.countHours);
days = computed(this.countDays);

constructor() {
this.calculatePrice();
}

calculatePrice() {
this.#price.set(
basePrice +
this.pricePerDoor() +
basePricePerDay * this.days() +
this.priceStep()
);
}

setBasic(amount: number) {
this.#basicDoorAmount.set(amount);
}

setElectro(amount: number) {
this.#electroDoorAmount.set(amount);
}

setAutomatic(amount: number) {
this.#automaticDoorAmount.set(amount);
}

private calculatePricePerDoor() {
const { basic, electro, automatic } = this.doorAmount();
return (
basic * basePricePerDoor.basic +
electro * basePricePerDoor.electro +
automatic * basePricePerDoor.automatic
);
}

private calculatePriceStep() {
const { basic } = this.doorAmount();
if (basic < 21) return 0;
if (basic < 101) return stepPrice[100];
if (basic < 251) return stepPrice[250];
if (basic < 1001) return stepPrice[1000];
return stepPrice[1001];
}

private countDoorAmount() {
return {
basic: this.#basicDoorAmount(),
electro: this.#electroDoorAmount(),
automatic: this.#automaticDoorAmount(),
};
}

private countHours() {
const { basic, electro, automatic } = this.doorAmount();
return (
(basic * minutesPerDoor.basic +
electro * minutesPerDoor.electro +
automatic * minutesPerDoor.automatic) /
60
);
}

private countDays() {
return Math.ceil(this.countHours() / 7.5);
}
}



Подробнее здесь: https://stackoverflow.com/questions/795 ... a-function
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»