Angular 2 - ng-content中的语句在它们不应该被解决时解决

时间:2016-11-26 22:28:08

标签: angular

我创建了一个组件,只有当某个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后才能解析。我该怎么做?

1 个答案:

答案 0 :(得分:2)

看到您正在使用内容投影(类似于翻译)每https://toddmotto.com/transclusion-in-angular-2-with-ng-content Angular 2将尝试在将该内容放入您的其他组件之前呈现Name: {{obj.name}}。< / p>

如果您投射的内容在任何时候都无法安全呈现,则您需要在外部使用*ngIf或使用Elvis运营商{{1}来防范它取决于你要去的效果。