disabled
- при изменении значения инпута проверяй его валидность, и если всё окей - убирай disabled
с кнопки, иначе - оставляй.pattern
для инпута: так ты сможешь проверять не только наличие значения в поле, но и соответствие его какому-либо формату(сейчас там просто равенство 1234).<div>
Status: {{status ? status : "Waiting..."}}<br>
Finished: {{myCtrl.finished}}
</div>
finished
в scope
вместо контроллера:$scope.$on('on-finish', (event, endTime, id) => {
// колбэк отрабатывает, но finished в шаблоне не обновляется
$scope.$endTime = endTime;
$scope.finished = status = 'Timer ' + id + ' finished at ' + endTime;
alert(this.finished);
})
this.service.login(form.value).subscribe(
(res: any) => {
if(res.token) {
localStorage.setItem('token', res.token);
this.router.navigateByUrl('/home');
}
else {
if (res.message) {
this.toast.error(res.message,'ERROR');
}
}
},
(err) => {
console.log(err.error);
}
);
useEffect
явно было видно, как зависимости влияют на выполняемые в эффекте действия. В твоём случае то, как data
влияет на вызов getList в эффекте, неочевидно.useEffect(() => {
getList(data)
}, [data])
.eslintrc
:{
"plugins": ["react-hooks"],
// ...
"rules": {
// ...
"react-hooks/exhaustive-deps": "off"
}
}
useEffect(() => {
getList()
}, [data]) // eslint-disable-line
/* eslint-disable react-hooks/exhaustive-deps */
useEffect(() => {
getList()
}, [data])
/* eslint-enable react-hooks/exhaustive-deps */