Свойства только для чтения могут быть назначены только в конструкторе
Не верно
class MyClass {
readonly prop1 = 'prop1';
constructor(
public readonly prop2 = 'prop2'
) {
}
ngOnInit() {
Object.defineProperty(this, 'prop3', { wirtable: false, value: 'prop3'});
}
}
Как видите, уже есть 3 способа их определения.И, вероятно, больше!
, но в angular это не рекомендуется и иногда невозможно использовать конструктор для определенной инициализации, а вместо этого используется угловой хук ngOnInit
It "не рекомендуется«для новичков, потому что им проще сказать не делать этого, чем подробно объяснять жизненный цикл фреймворка.Дело в том, что вы можете использовать конструктор по своему усмотрению, особенно для вещей, не связанных с Angular (например, переменные только для чтения).
Есть ли способ пометить ngOnInit как конструктор
Конструктор - это конструктор.Вы не можете определить метод, который будет конструктором.Вы можете вызвать только метод в конструкторе, но это не решит вашу проблему.
, чтобы я мог использовать только для чтения по существу неизменяемые свойства, которые назначаются только один раз в ngOnInit?
Ответ и нижняя строка: использовать ваш конструктор какпожалуйста Поместите свои свойства только для чтения, если хотите.
Кроме того, рассмотрите возможность предоставления некоторой песочницы или хотя бы некоторого кода, чтобы мы могли дать ответ, адаптированный как к вашему коду, так и к вашим потребностям.