如何将组件加载到另一个
How to load component into another
我尝试将 homeComponent 添加到我的 LayoutComponent 中。但是我看不到我的 homeComponent 的内容到 LayoutComponent 中。
用户连接后,我重定向到 homeComponent,我能够看到正确的内容。现在我想用一个通用的布局来包裹一些组件。
我的布局模板
<app-top-nav></app-top-nav>
<div class="wrapper">
<app-side-nav></app-side-nav>
<app-home></app-home>
</div>
我重定向到布局(来自我的 loginComponent)
onSubmit() {
this.submitted = true;
// stop here if form is invalid
if (this.loginForm.invalid) {
return;
}
this.loading = true;
this.user.login = this.f.username.value;
this.user.pwd = this.f.password.value;
console.log(this.user);
this.authenticationService.login(this.user)
.pipe(first())
.subscribe(
data => {
// console.log (' test '+ this.returnUrl);
this.router.navigate([this.returnUrl]);
},
error => {
this.error = error;
this.loading = false;
});
}
我的路由
{ path: '', component: GlobalLayoutComponent, canActivate: [AuthGuard],
// children:[
// { path:'', redirectTo: 'home'},
// { path:'home', component : HomeComponent}
// ]
},
{ path: 'login', component: LoginComponent },
编辑(添加app.module)
我的app.module
import { NbSecurityModule, NbRoleProvider } from '@nebular/security';
import { NbEvaIconsModule } from '@nebular/eva-icons';
import { MenuService } from './alertes/menu/menu.service';
import { JwtInterceptor } from './_helpers/jwt.interceptor';
import { ErrorInterceptor } from './_helpers/error.interceptor';
import { HomeComponent } from './home/home.component';
import { LoginComponent } from './login/login.component';
import { TopNavComponent } from './layout/top-nav/top-nav.component';
import { SideNavTogglerComponent } from './layout/side-nav-toggler/side-nav-toggler.component';
import { SideNavService } from './_services/side-nav.service';
import { GlobalLayoutComponent } from './layout/global-layout/global-layout.component';
import { SideNavComponent } from './layout/side-nav/side-nav.component';
@NgModule({
declarations: [
AppComponent,
HomeComponent,
LoginComponent,
TopNavComponent,
SideNavTogglerComponent,
GlobalLayoutComponent,
SideNavComponent
],
imports: [
BrowserModule,
BrowserAnimationsModule,
AppRoutingModule,
HttpClientModule,
ThemeModule.forRoot(),
NbThemeModule.forRoot(),
NbMenuModule.forRoot(),
NbAuthModule.forRoot(),
NbSecurityModule.forRoot(),
FormsModule,
ReactiveFormsModule,
// Validators,
ConfirmationPopoverModule.forRoot({
confirmButtonType: 'danger'}),
ToastrModule.forRoot(),
ChartsModule,
Ng2SmartTableModule,
NbEvaIconsModule
],
providers: [
{ provide: APP_BASE_HREF, useValue: '/' },
UserService,
MenuService,
SideNavService,
{ provide: NbRoleProvider,
useValue: {
getRole: () => {
return observableOf(['admin','user'])},},},
{ provide: HTTP_INTERCEPTORS, useClass: JwtInterceptor, multi: true },
{ provide: HTTP_INTERCEPTORS, useClass: ErrorInterceptor, multi: true }
],
bootstrap: [AppComponent]
})
export class AppModule { }
我不知道我错过了什么。
此代码显示了我的 globallayout,里面没有 homeComponent。我正在寻找在 GlobalLayoutComponent 中正确显示 homeComponent (<app-home>)
的解决方案。谢谢你的帮助
如果您想将一个组件加载到另一个组件中,您必须在声明中的父模块中添加另一个组件
declarations: [
AnotherComponent
]
我尝试将 homeComponent 添加到我的 LayoutComponent 中。但是我看不到我的 homeComponent 的内容到 LayoutComponent 中。
用户连接后,我重定向到 homeComponent,我能够看到正确的内容。现在我想用一个通用的布局来包裹一些组件。
我的布局模板
<app-top-nav></app-top-nav>
<div class="wrapper">
<app-side-nav></app-side-nav>
<app-home></app-home>
</div>
我重定向到布局(来自我的 loginComponent)
onSubmit() {
this.submitted = true;
// stop here if form is invalid
if (this.loginForm.invalid) {
return;
}
this.loading = true;
this.user.login = this.f.username.value;
this.user.pwd = this.f.password.value;
console.log(this.user);
this.authenticationService.login(this.user)
.pipe(first())
.subscribe(
data => {
// console.log (' test '+ this.returnUrl);
this.router.navigate([this.returnUrl]);
},
error => {
this.error = error;
this.loading = false;
});
}
我的路由
{ path: '', component: GlobalLayoutComponent, canActivate: [AuthGuard],
// children:[
// { path:'', redirectTo: 'home'},
// { path:'home', component : HomeComponent}
// ]
},
{ path: 'login', component: LoginComponent },
编辑(添加app.module)
我的app.module
import { NbSecurityModule, NbRoleProvider } from '@nebular/security';
import { NbEvaIconsModule } from '@nebular/eva-icons';
import { MenuService } from './alertes/menu/menu.service';
import { JwtInterceptor } from './_helpers/jwt.interceptor';
import { ErrorInterceptor } from './_helpers/error.interceptor';
import { HomeComponent } from './home/home.component';
import { LoginComponent } from './login/login.component';
import { TopNavComponent } from './layout/top-nav/top-nav.component';
import { SideNavTogglerComponent } from './layout/side-nav-toggler/side-nav-toggler.component';
import { SideNavService } from './_services/side-nav.service';
import { GlobalLayoutComponent } from './layout/global-layout/global-layout.component';
import { SideNavComponent } from './layout/side-nav/side-nav.component';
@NgModule({
declarations: [
AppComponent,
HomeComponent,
LoginComponent,
TopNavComponent,
SideNavTogglerComponent,
GlobalLayoutComponent,
SideNavComponent
],
imports: [
BrowserModule,
BrowserAnimationsModule,
AppRoutingModule,
HttpClientModule,
ThemeModule.forRoot(),
NbThemeModule.forRoot(),
NbMenuModule.forRoot(),
NbAuthModule.forRoot(),
NbSecurityModule.forRoot(),
FormsModule,
ReactiveFormsModule,
// Validators,
ConfirmationPopoverModule.forRoot({
confirmButtonType: 'danger'}),
ToastrModule.forRoot(),
ChartsModule,
Ng2SmartTableModule,
NbEvaIconsModule
],
providers: [
{ provide: APP_BASE_HREF, useValue: '/' },
UserService,
MenuService,
SideNavService,
{ provide: NbRoleProvider,
useValue: {
getRole: () => {
return observableOf(['admin','user'])},},},
{ provide: HTTP_INTERCEPTORS, useClass: JwtInterceptor, multi: true },
{ provide: HTTP_INTERCEPTORS, useClass: ErrorInterceptor, multi: true }
],
bootstrap: [AppComponent]
})
export class AppModule { }
我不知道我错过了什么。
此代码显示了我的 globallayout,里面没有 homeComponent。我正在寻找在 GlobalLayoutComponent 中正确显示 homeComponent (<app-home>)
的解决方案。谢谢你的帮助
如果您想将一个组件加载到另一个组件中,您必须在声明中的父模块中添加另一个组件
declarations: [
AnotherComponent
]