Я хочу иметь что-то вроде этого:
ngOnInit(){
...
function test() {
...
}
}
function()
{
test();
}
Если это возможно, то как?
Функция, которую вы определяете в ngOnInit
должна храниться где-нибудь в экземпляре класса, чтобы вызвать ее снова. Это означает, что вам нужен атрибут для его сохранения.
class Component {
private fn: Function; // or a better type if you know it
}
Теперь внутри ngOnInit
назначьте функцию этой переменной. Вы, вероятно, хотите использовать функцию стрелки, чтобы this
было то, что вы (вероятно) ожидаете.
class Component {
private fn: Function; // or a better type if you know it
public ngOnInit(): void {
this.fn = () => {} // create it here
}
}
После этого вы можете просто вызвать функцию fn
как обычно, из любого места.
this.fn()
Однако будьте осторожны, если вы попытаетесь выполнить вышеприведенную строку до того, как вы нажмете на крючок OnInit
, вы получите ошибку времени выполнения. Например, если вы используете fn
внутри крючка OnChanges
(который будет вызываться один раз до крючка OnInit
), вам нужно быть осторожным:
if (this.fn) {
this.fn()
}
Я не уверен, почему вы хотите сделать что-то подобное? Но это то, что заставило бы его работать:
Внутри вашего компонента объявите переменную
func : any;
Затем внутри ngOnInit,
ngOnInit(){
...
func = function test() {
...
}
}
Затем, чтобы вызвать функцию внутри другой функции в том же компоненте,
function someOtherFunction()
{
this.func();
}
let
. Нет типа Any
, только any
. При создании func
с помощью function
синтаксиса, вам необходимо сохранить ссылку на this
- вы должны использовать функцию стрелки вместо этого. Вы не можете вызвать функцию с помощью function() { func () }
; это определение функции, а не вызов.