? (safe navigation) only works with . (dereference operator), not with [] (index access operator)
What might work
<h1>{{(chapters | async)?.length && (chapters | async)[0].title}}</h1>
but I'm not sure if chapters signed twice. In this case, this will not be a good solution. Angular2 does some deduplication in template bindings, but not sure about | async | async .
Another approach would be to assign the result to a property
ngOnInit() { this.chapters.subscribe(val => this.captersResult = val); }
<h1>{{(chaptersResult?.length && chaptersResult[0].title}}</h1> }
source share