আমি @ কনটেন্টচিল্ডেন ডেকরেটার ব্যবহার করে একটি সমাধান কার্যকর করেছি , এটি @ লার্নারের উত্তরের মতোই।
ডক্স অনুসারে , এই সাজসজ্জা:
DOM বিষয়বস্তু থেকে উপাদান বা নির্দেশের কোয়েরি তালিকা পান। যে কোনও সময় কোনও শিশু উপাদান যুক্ত করা, অপসারণ বা সরানো হলে ক্যোয়ারী তালিকা আপডেট করা হবে এবং কোয়েরি তালিকার পর্যবেক্ষণযোগ্য পরিবর্তনগুলি একটি নতুন মান নির্গত করবে।
সুতরাং প্যারেন্ট উপাদানগুলির প্রয়োজনীয় কোডটি হ'ল:
<app-my-component>
<div #myComponentContent>
This is my component content
</div>
</app-my-component>
উপাদান শ্রেণিতে:
@ContentChildren('myComponentContent') content: QueryList<ElementRef>;
তারপরে, উপাদান টেমপ্লেটে:
<div class="container">
<ng-content></ng-content>
<span *ngIf="*ngIf="!content.length""><em>Display this if ng-content is empty!</em></span>
</div>
পুরো উদাহরণ : https://stackblitz.com/edit/angular-jjjdqb
আমি এই সমাধান, কৌণিক উপাদান বাস্তবায়িত জন্য পেয়েছি matSuffix
, এ ফর্ম-ক্ষেত্র অংশটি।
পরে যখন উপাদানটির বিষয়বস্তু ইনজেক্ট করা হয়, অ্যাপটি শুরু করার পরে , আমরা এছাড়াও এর changes
ইভেন্টটির সাবস্ক্রাইব করে একটি প্রতিক্রিয়াশীল প্রয়োগ করতে পারি QueryList
:
export class MyComponentComponent implements AfterContentInit, OnDestroy {
private _subscription: Subscription;
public hasContent: boolean;
@ContentChildren('myComponentContent') content: QueryList<ElementRef>;
constructor() {}
ngAfterContentInit(): void {
this.hasContent = (this.content.length > 0);
this._subscription = this.content.changes.subscribe(() => {
this.hasContent = (this.content.length > 0);
});
}
ngOnDestroy() {
this._subscription.unsubscribe();
}
}
সম্পূর্ণ উদাহরণ : https://stackblitz.com/edit/angular-essvnq