Используйте флаг finished
в компоненте.
В представлении =>
<button type="submit" [disabled]="!finished">Add</button>
В компоненте =>
public finished = false;
В сторону Обещания =>
let promise1 = Promise.resolve(3);
let promise2 = 42;
let promise3 = new Promise(function(resolve, reject) {
setTimeout(resolve, 100, 'foo');
});
Promise.all([Promise1,Promise2,....]).then((...)=> {
finished =true; // your button will be enabled!!
})
Вы можете узнать больше от здесь
ИЛИ
Вы можете использовать флаг для каждого обещания =>
public promiseF1 = false;
public promiseF2 = false;
public promiseF3 = false;
etc...
Для каждого звонка в начале сделайте false
, а когда в конце звонка сделайте true
.
Так что HTML будет выглядеть так =>
<button type="submit"[disabled]="!promiseF1 && !promiseF2 && !promiseF3 && etc...">
Add
</button>