WedX - журнал о программировании и компьютерных науках

В простом приложении angular я должен показывать общий заголовок для всех страниц после входа в систему, но общий заголовок не отображается на странице сведений о пользователе.

В простом приложении angular я должен показывать общий заголовок для всех страниц после входа в систему, но общий заголовок не отображается на странице сведений о пользователе

Я хочу, чтобы общий заголовок был виден и на странице сведений о пользователе, но этого не произойдет.

-myapp
  -src
   -layout
    -common
      -header
       header.component.css
       header.component.html
       header.component.spec.ts
       header.component.ts
    -dashboard
     dashboard-routing.module.ts
     dashboard.component.css
     dashboard.component.html
     dashboard.component.spec.ts
     dashboard.module.ts
     dashboard.component.ts
     - userdetails
       userdetails-routing.module.ts
       userdetails.component.css
       userdetails.component.html
       userdetails.component.spec.ts
       userdetails.module.ts
       userdetails.component.ts
   layout-routing.module.ts
   layout.component.css
   layout.component.html
   layout.component.spec.ts
   layout.module.ts
   layout.component.ts
 -login
 -services
 app-routing.module.ts
 app.component.css
 app.component.html
 app.component.spec.ts
 app.module.ts
 app.component.ts

Модуль компонентов макета и панели инструментов и файлы маршрутизации - это ленивые файлы

app.modules.ts:

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';

import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { LoginComponent } from './login/login.component';

import { LayoutModule } from './layout/layout.module';

@NgModule({
  declarations: [
    AppComponent,
    LoginComponent
  ],
  imports: [
    BrowserModule,
    AppRoutingModule,
    FormsModule,
    ReactiveFormsModule,    
    LayoutModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

layout.modules.ts:

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';

import { LayoutRoutingModule } from './layout-routing.module';
import { LayoutComponent } from './layout.component';
import { DashboardModule } from './dashboard/dashboard.module';
import { HeaderComponent } from './common/header/header.component';

@NgModule({
  declarations: [
    LayoutComponent,
    HeaderComponent
  ],
  imports: [
    CommonModule,
    LayoutRoutingModule,
    DashboardModule
  ],
  exports: [HeaderComponent]
})
export class LayoutModule { }

dashbard.modules.ts:

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';

import { DashboardRoutingModule } from './dashboard-routing.module';
import { DashboardComponent } from './dashboard.component'

import { UserdetailsModule } from './userdetails/userdetails.module';

@NgModule({
  declarations: [DashboardComponent],
  imports: [
    CommonModule,
    DashboardRoutingModule,
    UserdetailsModule
  ],
  exports: [DashboardComponent]
})
export class DashboardModule { }

app.component.html:

<router-outlet></router-outlet>

layout.component.html:

<app-header></app-header>
<router-outlet></router-outlet>

dashboard.component.html:

<router-outlet></router-outlet>
..
..

app-routing.module.ts:

import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { LoginComponent } from './login/login.component';
import { DashboardComponent } from './layout/dashboard/dashboard.component';

const routes: Routes = [
  { path: "", component: LoginComponent },  
  { path: 'layout', loadChildren: './layout/layout.module#LayoutModule'}
];

@NgModule({
  imports: [RouterModule.forRoot(routes)],
  exports: [RouterModule]
})
export class AppRoutingModule { }

layout-routing.module.ts:

import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { DashboardComponent } from './dashboard/dashboard.component';
import { LayoutComponent } from './layout.component';

const routes: Routes = [
  {
    path: '', component: LayoutComponent,
    children: [
      { path: 'dashboard', loadChildren: './dashboard/dashboard.module#DashboardModule' }
    ]
  }  
];

@NgModule({
  imports: [RouterModule.forChild(routes)],
  exports: [RouterModule]
})
export class LayoutRoutingModule { }

dashboard-routing.module.ts:

import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { DashboardComponent } from './dashboard.component';
import { UserdetailsComponent } from './userdetails/userdetails.component';

const routes: Routes = [
  {
    path: '', component: DashboardComponent,
    children: [
      {path: "user-details/:id", loadChildren: './userdetails/userdetails.module#UserdetailsModule'}
    ]
  }
];

@NgModule({
  imports: [RouterModule.forChild(routes)],
  exports: [RouterModule]
})
export class DashboardRoutingModule { }

Предложите мне внести изменения, чтобы этот общий заголовок отображался и на странице сведений о пользователе ..


  • Не могли бы вы добавить свой код к вопросу? Никто не хочет возвращаться назад и вперед между несколькими снимками экрана. 28.05.2020
  • @Steve отредактировал ... пожалуйста, проверьте это сейчас 01.06.2020

Ответы:


1

вы определили HeaderComponent внутри LayoutModule и используете его внутри AppModule, поэтому вы должны экспортировать его, чтобы AppModule мог его видеть, рефакторинг, подобный этому

@NgModule({
  declarations: [
    DashboardComponent,
    HeaderComponent
  ],
  imports: [
    CommonModule,
    LayoutRoutingModule
  ],
  exports:[HeaderComponent] //here it will export header component
})
export class LayoutModule { }
28.05.2020
  • да, я также добавил это ... но не показывает этот заголовок на странице сведений о пользователе ... Я редактировал вопрос ... пожалуйста, помогите мне решить эту проблему 01.06.2020

  • 2

    Похоже, это просто проблема конфигурации маршрутизатора. Я внес некоторые изменения в ваш код. Пожалуйста, обратитесь: https://stackblitz.com/edit/angular-ivy-rtzy77

    Я не добавил модуль маршрутизации, но создал маршруты в самом модуле.

    Единственное изменение, которое я сделал, - это удаление <router-outlet></router-outlet> из dashboard.component.ts.

    Вам не нужна третья розетка маршрутизатора.

    РЕДАКТИРОВАТЬ 1: даже после добавления 3-го маршрута я рассмотрел ваш вариант использования. . Пример должен работать. См. Пример stackblitz

    Открыть: https://angular-ivy-rtzy77.stackblitz.io/layout/dashboard/user для необходимого заголовка и пользовательского компонента.

    РЕДАКТИРОВАТЬ 2. Кроме того, вместо использования нескольких вложений вы можете внести изменения в свой layout-routing.module следующим образом, сохраняя пользовательский модуль внутри модуля макета, а не модуля панели, а затем удалить router-outlet из dashboard.component.

    import { NgModule } from '@angular/core';
    import { Routes, RouterModule } from '@angular/router';
    import { DashboardComponent } from './dashboard/dashboard.component';
    import { LayoutComponent } from './layout.component';
    
    const routes: Routes = [
      {
        path: '', component: LayoutComponent,
            children: [
          { path: 'dashboard', loadChildren: './dashboard/dashboard.module#DashboardModule' },
    {path: "user-details/:id", loadChildren: './userdetails/userdetails.module#UserdetailsModule'}
        ]
      }  
    ];
    
    @NgModule({
      imports: [RouterModule.forChild(routes)],
      exports: [RouterModule]
    })
    export class LayoutRoutingModule { }
    

    Затем в dashboard.component.html удалите router-outlet. Всего с 2 router-outlet вы сможете удовлетворить свои потребности.

    02.06.2020
  • он будет работать, но правильно ли это, если мы объявляем маршрутизацию сведений о пользователях непосредственно в layout-routing вместо панели инструментов .. это стандартный способ в отношении родительских дочерних элементов .. пожалуйста, дайте мне знать 03.06.2020
  • и предположим, что если есть более одного URL-адреса модуля сведений о пользователе, то как мы собираемся упомянуть в layout-routing 03.06.2020
  • модуль userdetails находится внутри модуля приборной панели 03.06.2020
  • @HemantP, пример, который я создал с помощью stackblitz, в основном использует тот же код. Если между приборной панелью и пользовательским модулем нет родительских и дочерних отношений, вы можете удалить розетку маршрутизатора на приборной панели и использовать пользовательский модуль в модуле макета. Другой пример, который я создал, должен работать нормально. 03.06.2020
  • Новые материалы

    Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что это выглядит сложно…
    Просто начните и учитесь самостоятельно Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что он кажется мне сложным, и я бросил его. Это в основном инструмент..

    Лицензии с открытым исходным кодом: руководство для разработчиков и создателей
    В динамичном мире разработки программного обеспечения открытый исходный код стал мощной парадигмой, способствующей сотрудничеству, инновациям и прогрессу, движимому сообществом. В основе..

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..


    Для любых предложений по сайту: [email protected]