Skip to content

Commit 27ccb9e

Browse files
author
Liberatys
committed
fix(tabset): Use the init state to determine if the nb-template should be loaded
Use the existing state indication to prevent initial rendering of templates with he lazy directive
1 parent aedfbd3 commit 27ccb9e

File tree

2 files changed

+26
-5
lines changed

2 files changed

+26
-5
lines changed

src/framework/theme/components/tabset/tabset.component.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ import { NbTabTitleDirective } from './tab-title.directive';
4343
selector: 'nb-tab',
4444
template: `
4545
<ng-container
46-
*ngIf="tabContentDirective; else projectedContent"
46+
*ngIf="init && tabContentDirective; else projectedContent"
4747
[ngTemplateOutlet]="tabContentDirective.templateRef"
4848
></ng-container>
4949

src/playground/with-layout/tabset/tabset-test.component.ts

+25-4
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66

77
import { Component } from '@angular/core';
88
import { Router } from '@angular/router';
9+
import { Observable } from 'rxjs';
10+
import { tap } from 'rxjs/operators';
911

1012
@Component({
1113
selector: 'nb-tabset-test',
@@ -137,21 +139,40 @@ import { Router } from '@angular/router';
137139
<nb-tab tabTitle="Tab #2">
138140
<span>Content #2</span>
139141
</nb-tab>
140-
<nb-tab tabTitle="Tab #3" lazyLoad>
141-
<span>Content #3</span>
142+
<nb-tab tabTitle="Tab #3">
143+
<ng-template nbTabContent>
144+
{{ logTabLoad('3') }}
145+
<span>Content #3</span>
146+
</ng-template>
142147
</nb-tab>
143-
<nb-tab tabTitle="Tab #4" lazyLoad>
144-
<span>Content #4</span>
148+
<nb-tab tabTitle="Tab #4">
149+
<ng-template nbTabContent>
150+
{{ logTabLoad('4') }}
151+
<span>Content #4</span>
152+
</ng-template>
145153
</nb-tab>
146154
</nb-tabset>
147155
`,
148156
})
149157
export class TabsetTestComponent {
150158

151159
constructor(private router: Router) {
160+
152161
}
153162

154163
changeTab($event: any) {
155164
this.router.navigate(['tabset', 'tabset-test.component', $event.route]);
156165
}
166+
167+
private tabs = new Map([
168+
['3', false],
169+
['4', false]
170+
]);
171+
172+
public logTabLoad(tab: string) {
173+
if(this.tabs.get(tab) === false) {
174+
this.tabs.set(tab, true);
175+
console.log(`The tab ${tab} is now loaded`);
176+
}
177+
}
157178
}

0 commit comments

Comments
 (0)