angular 2、Registerというコンポーネントがあります。この1つのコンポーネントには5つのHTMLページがあり、最初の登録ページを1回クリックすると2番目の登録ページに移動し、クリックすると1つのコンポーネントで5つのHTMLページを作成するにはどうすればよいですか?コンポーネントごとに複数のテンプレートを実現する方法はありますか?ルーティングの方法は?主な目的は、別個のHTMLとSCSSファイルとルーティングロジック。
現在、ngIf
を使用してページをレンダリングしているため、ページが非常に長くなっています。これを達成する方法はありますか?
<!--View 1-->
<div class="open-card-BG" *ngIf="registerView=='regView1'">
Register Page 1
</div>
<!--View 2-->
<div class="open-card-BG" *ngIf="registrationView=='regView2'">
Register Page 2
</div>
@Component({
selector: 'register-page',
templateUrl: './register-page.component.html',
styleUrls: ['./register-page.component.scss'],
providers : [RegisterService,Configuration,LocalStorageService]
})
ngOnInit() {
this.registerView= "regView1";
}
changeView(view) {
this.registerView= view;
}
previousView(view) {
this.registerView= view;
}
このようにしてみてください:
@Component({
selector: 'register-page',
template: `
<div class="open-card-BG" *ngIf="registerView == 'regView1'">Reg View 1 Content</div>
<div class="open-card-BG" *ngIf="registerView == 'regView2'">Reg View 2 Content</div>
`,
styleUrls: ['./register-page.component.scss'],
providers: [RegisterService, Configuration, LocalStorageService]
})
export class Appcomponent {
registerView = 'regView1';
}
それ以外はこのようにします
page1.component.html
<div>
<h1>Page1 Component Content</h1>
</div>
page2.component.html
<div>
<h1>Page2 Component Content</h1>
</div>
home.component.html
<div>
<div class="open-card-BG" *ngIf="registerView == 'regView1'">
<app-page1-component></app-page1-component>
</div>
<div class="open-card-BG" *ngIf="registerView == 'regView2'">
<app-page2-component></app-page2-component>
</div>
</div>
component.ts
@Component({
selector: 'app-home',
templateUrl: './home.component.html',
styleUrls: ['./home.component.css']
})
export class HomeComponent {
registerView = 'regView1';
}
Angular
components
は基本的に画面のパッチであり、各コンポーネントクラスに常に単一のテンプレートが必要であることを意味します。単一のコンポーネントクラスに複数のテンプレートを使用する場合、用語ではcomponent definition
を参照しません。使用する場合は、base class
を作成し、3つのseparate
component
を作成し、base
クラスを拡張します。
これを行うには、* ngIfを使用するのが最も賢明な方法です。 * ngIfを使用してHTMLの大きなチャンクをカバーする必要があるという点に到達した場合、それらは明らかに大幅に異なるビューを持っているため、これらは別々のコンポーネントである必要があることを示している可能性があります。
.tsファイルに多くの共有ロジックがある場合、すべての共有ロジックでクラスを作成し、個々のコンポーネントでクラス継承を使用できます。
export class BaseComponentLogic implements OnInit {
...
}
@Component({...})
export class MyFirstComponent extends BaseComponentLogic implements OnInit {
...
}
@Component({...})
export class MySecondComponent extends BaseComponentLogic implements OnInit {
...
}