我创建了一个组件,只有当某个obj不为null时才显示其ng-content(它比实际中的更复杂,但是让我们说这是为了这个例子)问题)。
以下是组件" comp"使用:
int lastWindowIndex = 0; // global var in your class encapsulating exoplayer obj (Activity, etc.)
exoPlayer.addListener(new ExoPlayer.EventListener() {
@Override
public void onLoadingChanged(boolean isLoading) {
}
@Override
public void onPlayerStateChanged(boolean playWhenReady, int playbackState) {
}
@Override
public void onTimelineChanged(Timeline timeline, Object manifest) {
}
@Override
public void onPlayerError(ExoPlaybackException error) {
}
@Override
public void onPositionDiscontinuity() {
//THIS METHOD GETS CALLED FOR EVERY NEW SOURCE THAT IS PLAYED
int latestWindowIndex = exoPlayer.getCurrentWindowIndex();
if (latestWindowIndex != lastWindowIndex) {
// item selected in playlist has changed, handle here
lastWindowIndex = latestWindowIndex;
// ...
}
}
});
组件的模板如下所示:
<comp [ref]="obj">
Name: {{obj.name}}
</comp>
问题是,Angular试图解析{{obj.name}}之前它出现在comp模板中的ng-content中(当obj为null时),从而导致错误。
我希望ng-content中的语句只有在显示ng-content后才能解析。我该怎么做?
答案 0 :(得分:2)
看到您正在使用内容投影(类似于翻译)每https://toddmotto.com/transclusion-in-angular-2-with-ng-content Angular 2将尝试在将该内容放入您的其他组件之前呈现Name: {{obj.name}}
。< / p>
如果您投射的内容在任何时候都无法安全呈现,则您需要在外部使用*ngIf
或使用Elvis运营商{{1}来防范它取决于你要去的效果。