Проблема может быть проста, но я не вижу, что не так прямо сейчас.
В рамках службы в моем проекте Angular есть следующая функция:
public addCompany(){
let newP:any = {
"name": "Chay elsarici",
"password": "1234",
"email": "[email protected]",
"coupons": []
}
this.myHttpClient.post<any>("http://localhost:8080/CouponSystemJersey/couponsystem/admin/insertCompany", newP).subscribe(
(res)=>{console.info("new company")},
(err)=>{console.info(err)}
);
}
В html файле админки Componente есть следующая кнопка:
<input type = "button" onclick = "addNewCompany()" value = "Click here to insert company "/>
А в файле ts компонента admin существующая следующая функция:
public addNewCompany():void{
console.info("someone click");
this.myService.addCompany();
};
Когда я нажимаю кнопку, я получаю следующую ошибку:
Uncaught ReferenceError: addNewCompany is not defined
at HTMLInputElement.onclick (admin:13)
что мне не хватает?
Эта ошибка указывает на то, что ваш Component
не знает Service
, который предоставляет метод addCompany()
.
Хорошо ли вы импортируете свои Service
в Component
constructor
?
Вы также объявляете это в массиве Component
Module
providers
?
Я думаю, вы знаете, как это сделать, но вот специальные темы в документации Angular:
Как сказал @Giovani Vercauteren, Angular является его собственная реализация из onclick
с привязкой (click) = "..."
. Поэтому вы должны изменить его в своем коде.
Я сделал импорт службы, используя DI внутри конструктора. И в app.module есть объявление компонента администратора. Можете также загрузить этот код, если вы думаете, что у меня есть ошибка.
В вашем HTML вы используете
onclick = "addNewCompany()"
Вы должны использовать
(click) = "addNewCompany()"
Когда вы используете onclick
, вы используете определение HTML по умолчанию, и это будет смотреть на глобальную область действия JavaScript. Если вы используете (click)
, функция будет работать в области контроллера вашего компонента.
Используйте директиву
(click)
, а не собственное событиеonclick
.