Остальная часть вашего кода выглядит правильно, я думаю, что ваш console.log(this)
находится в неправильном месте.
ngOnInit() {
this.getPost(); <----- your getPost() function is asynchronous
console.log(this); <----- meaning this console.log runs before you get data from Firebase
so when this runs, posts is still undefined.
If you would console.log(this) *AFTER* you get data
from Firebase, then you should see the values OK.
}
getPost(){
const id= this.route.snapshot.paramMap.get('id')
return this.postService.getPostData(id).subscribe(data=>this.post=data)
^^^^^^^^^^^
ASYNC portion is right here
}
Чтобы исправить это, переместите консоль.log внутри своей подписки:
ngOnInit() {
this.getPost();
<--- From here
}
getPost(){
const id= this.route.snapshot.paramMap.get('id')
return this.postService.getPostData(id).subscribe(data=> {
this.post=data;
console.log(this); <--- To here
});
}
EDIT - Дополнительное устранение неполадок см. ниже.
getPost(){
const id= this.route.snapshot.paramMap.get('id')
console.log('id from route params is: ' + id); <---- log the *id* too
return this.postService.getPostData(id).subscribe(data=> {
this.post=data;
console.log(data); <--- log *data* instead
});
}
Нет чувствительности, нет проблем : Я второй, что Клаус сказал: содержит ли этот код что-нибудь чувствительное? [ 1114] Обычно чувствительные аспекты вращаются вокруг лицензирования или ключей , которые вы хотите защитить. Обязательно скомпилируйте двоичные файлы режима Release (было бы здорово, если бы не требования времени выполнения на обычных машинах также не выполнялись).
Защита конфиденциальной информации : Некоторое время назад я написал целый контрольный список по вопросу предотвращения распространения конфиденциальной информации с помощью вашего решения для развертывания: Как избежать случайно распространил конфиденциальную информацию в моем MSI? (один из тех растягивающихся ответов, которые сходят с ума, пока вы пишете, - все же стоит потратить деньги).
Собственный код : Если у вас есть серьезные проблемы с чувствительностью, я бы скомпилировал настраиваемое действие C ++ вместо настраиваемого действия управляемого кода, чтобы сделать что-то еще »[115 ] до металла ". Это также отлично подходит для обеспечения минимальных зависимостей времени выполнения (статическое связывание).
blockquote>Открытый исходный код : Откровенно говоря, я бы рассмотрел открытый исходный код всего своего установочного кода, если нет чувствительности. Если у пользователей есть проблема, они могут отлаживать себя сами, хотя во многих случаях выгода от этого может быть просто ужасной. Вы можете закрыть отдельные индивидуальные действия, которые требуют чувствительности. Я бы использовал открытый исходный код в качестве аргумента продаж - да, вы можете увидеть наш исходный код настройки для настройки в вашей среде, если это будет необходимо.
Установка похожа на резюме: она существует только как средство доставки чего-то еще ценного? Само по себе оно не имеет значения. Вы хотите продажи своего программного обеспечения в первую очередь? И безопасность конечно. Разрешение пользователям компилировать свои собственные настройки из ваших источников также может привести к проблемам - конечно. Вы хотите поддержать самоскомпилированную установку?