RouterLink가 콘텐츠를 업데이트하지 않음

DataGuy

다음 구성 요소가 있습니다.

nav.component.ts

import { Component, OnInit } from '@angular/core';
import { ApiService } from '../api.service';
import { ActivatedRoute } from '@angular/router';

@Component({
  selector: 'app-nav',
  templateUrl: './nav.component.html',
  styleUrls: ['./nav.component.css'],
  providers: [ApiService]
})
export class NavComponent implements OnInit {
menus;
id;
    constructor(private api: ApiService, private route: ActivatedRoute) { }

    ngOnInit() {
    this.route.queryParams.subscribe(queryParams => { this.id = queryParams.id });
    this.api.getMenus().subscribe(res => {this.menus = res});

    this.route.params.subscribe(routeParams => {
    this.set_id(routeParams.id)
    })
  }

  set_id(id){
    this.id = id
    console.log(this.id)
  }
}

이 구성 요소에서 메뉴가로드되고 다음 링크에서 오는 route.param에서 변수가 설정됩니다.

nav.component.html

<div *ngFor="let menu of menus; index as id">
    <ul>
        <li><a routerLink ="content/{{id}}" (click)="set_id(id)">{{menu['course-lesson-name']}}</a></li>
    </ul>
</div>

앱은 정상적으로로드되지만 콘텐츠는 한 번만 업데이트됩니다. 단일 메뉴 항목을 클릭하면 콘텐츠가 표시되지만 후속 클릭이 아무 것도로드하지 않는다는 점에서 기능이 손실됩니다. 각 링크에 대해 브라우저에서 URL을 수동으로 조작하면 콘텐츠가 필요에 따라로드되므로 링크에 문제가 있다고 가정합니다. BTW, ID가 필요에 따라 설정되고 콘솔에 로깅되지만 값에 따라 필요에 따라 콘텐츠를 다시로드하지 않습니다.

필요한 경우 라우터는 다음과 같습니다.

import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { ContentComponent } from './content/content.component';
import { HomeComponent } from './home/home.component';

const routes: Routes = [
  {path: 'content/:id', component: ContentComponent},
  {path: '', component: HomeComponent}
];
@NgModule({
  imports: [RouterModule.forRoot(routes)],
  exports: [RouterModule]
})
export class AppRoutingModule { }

id를 저장하고 content.component.ts에 전달해야 getContent ()가이를 사용하여 응답에서 올바른 콘텐츠 요소를 구문 분석 할 수 있습니다.

content.component.ts

import { Component, OnInit, OnChanges, Input } from '@angular/core';
import { ApiService } from '../api.service';
import { RouterLink, ActivatedRoute } from '@angular/router';

@Component({
  selector: 'app-content',
  templateUrl: './content.component.html',
  styleUrls: ['./content.component.css'],
  providers: [ApiService]
})
export class ContentComponent implements OnInit {
content;
id;
  constructor(private api: ApiService, private route: ActivatedRoute) { }

  ngOnInit(){
    this.route.queryParams.subscribe(queryParams => { this.id = queryParams.id });
    this.api.getContent().subscribe((res : any[]) => {this.content = res[this.id]})
    this.api.getContent().subscribe((res) => {this.content = res[this.id]})
  }

}
Mwilson

예, URL에서 매개 변수가 변경 될 때 구성 요소가 다시로드되지 않기 때문입니다. 각도 GitHub에는 이것에 대해 꽤 길고 열띤 GitHub 문제가 있습니다. 기본적으로 다음을 수행해야합니다.

  1. ActivatedRoute구성 요소에 주입 ( this._route아래)
  2. 에 가입하고 queryParams필요한 작업을 수행하십시오.

예:

this._route.queryParams.subscribe( q => {
    // Do something...
} );

이 유형에 대해 따르는 일반적인 패턴은 매개 변수가 함수로 변경 될 때 실행해야하는 모든 논리를 캡슐화하는 것입니다. 그런 다음 해당 함수를 실행 ngOnInit한 다음 바로 아래에서 구독 queryParams하여 모든 업데이트에 반응 할 수 있습니다 (따라서이를 처리 한 동일한 함수를 호출).

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Rails 4의 Ajax가 콘텐츠를 업데이트하지 않음

분류에서Dev

TabBarView 콘텐츠가 setstate에서 업데이트되지 않음

분류에서Dev

UserControl 콘텐츠가 업데이트되지 않음

분류에서Dev

선택적 매개 변수 변경시 React Router V4가 콘텐츠를 업데이트하지 않음

분류에서Dev

NavigationView의 콘텐츠가 SwiftUI를 표시하지 않음

분류에서Dev

Android WebView가 HTTPS 콘텐츠를 캐싱하지 않음

분류에서Dev

Apache가 정적 콘텐츠를 캐싱하지 않음

분류에서Dev

index.jade가 콘텐츠를 표시하지 않음

분류에서Dev

UIWebView가 아랍어로 콘텐츠를 표시하지 않음

분류에서Dev

"PageTabViewStyle"이 포함 된 TabView는 @State var가 변경 될 때 콘텐츠를 업데이트하지 않습니다.

분류에서Dev

Jquery Mobile 콘텐츠가 100 %를 채우지 않음

분류에서Dev

Android : diff 조각의 콘텐츠가 업데이트되지 않음

분류에서Dev

ViewPager에서 탭 변경시 콘텐츠가 업데이트되지 않음-Tablayout

분류에서Dev

TextBlock은 콘텐츠를 업데이트하지 않습니다.

분류에서Dev

Django가 텍스트 콘텐츠를 제공하지 않음 (첫 번째 시도)

분류에서Dev

Django가 텍스트 콘텐츠를 제공하지 않음 (두 번째 시도)

분류에서Dev

스프링 부트가 정적 웹 콘텐츠를 시작하지 않음

분류에서Dev

드롭 다운 메뉴가 콘텐츠를 이동하지 않음

분류에서Dev

Javascript를 사용하여 div에 콘텐츠 추가가 작동하지 않음

분류에서Dev

블록 콘텐츠를 사용할 때 Django CSS가 작동하지 않음

분류에서Dev

ViewData가 View에 콘텐츠를 표시하지 않음 (asp.net mvc C #)

분류에서Dev

android-Webview가 Facebook URL의 콘텐츠를 제대로 표시하지 않음

분류에서Dev

tinymce가 공백으로 시작된 콘텐츠를 제출하지 않음

분류에서Dev

jQuery 콘텐츠 컨트롤러가 콘텐츠를 제대로 표시하고 숨기지 않습니다.

분류에서Dev

콘텐츠 스크립트에서 콘텐츠 JavaScript가 실행되지 않음

분류에서Dev

Rails & Slim : 자동 닫힘 태그가 콘텐츠를 가져 오지 않음

분류에서Dev

View의 콘텐츠가 간접적으로 업데이트되면 트리거되지 않음

분류에서Dev

jQuery의 .prepend가 처음에 콘텐츠를 추가하는 대신 내 콘텐츠를 대체합니다.

분류에서Dev

AJAX를 사용하여 DIV 콘텐츠 추가-이전 / 다음

Related 관련 기사

  1. 1

    Rails 4의 Ajax가 콘텐츠를 업데이트하지 않음

  2. 2

    TabBarView 콘텐츠가 setstate에서 업데이트되지 않음

  3. 3

    UserControl 콘텐츠가 업데이트되지 않음

  4. 4

    선택적 매개 변수 변경시 React Router V4가 콘텐츠를 업데이트하지 않음

  5. 5

    NavigationView의 콘텐츠가 SwiftUI를 표시하지 않음

  6. 6

    Android WebView가 HTTPS 콘텐츠를 캐싱하지 않음

  7. 7

    Apache가 정적 콘텐츠를 캐싱하지 않음

  8. 8

    index.jade가 콘텐츠를 표시하지 않음

  9. 9

    UIWebView가 아랍어로 콘텐츠를 표시하지 않음

  10. 10

    "PageTabViewStyle"이 포함 된 TabView는 @State var가 변경 될 때 콘텐츠를 업데이트하지 않습니다.

  11. 11

    Jquery Mobile 콘텐츠가 100 %를 채우지 않음

  12. 12

    Android : diff 조각의 콘텐츠가 업데이트되지 않음

  13. 13

    ViewPager에서 탭 변경시 콘텐츠가 업데이트되지 않음-Tablayout

  14. 14

    TextBlock은 콘텐츠를 업데이트하지 않습니다.

  15. 15

    Django가 텍스트 콘텐츠를 제공하지 않음 (첫 번째 시도)

  16. 16

    Django가 텍스트 콘텐츠를 제공하지 않음 (두 번째 시도)

  17. 17

    스프링 부트가 정적 웹 콘텐츠를 시작하지 않음

  18. 18

    드롭 다운 메뉴가 콘텐츠를 이동하지 않음

  19. 19

    Javascript를 사용하여 div에 콘텐츠 추가가 작동하지 않음

  20. 20

    블록 콘텐츠를 사용할 때 Django CSS가 작동하지 않음

  21. 21

    ViewData가 View에 콘텐츠를 표시하지 않음 (asp.net mvc C #)

  22. 22

    android-Webview가 Facebook URL의 콘텐츠를 제대로 표시하지 않음

  23. 23

    tinymce가 공백으로 시작된 콘텐츠를 제출하지 않음

  24. 24

    jQuery 콘텐츠 컨트롤러가 콘텐츠를 제대로 표시하고 숨기지 않습니다.

  25. 25

    콘텐츠 스크립트에서 콘텐츠 JavaScript가 실행되지 않음

  26. 26

    Rails & Slim : 자동 닫힘 태그가 콘텐츠를 가져 오지 않음

  27. 27

    View의 콘텐츠가 간접적으로 업데이트되면 트리거되지 않음

  28. 28

    jQuery의 .prepend가 처음에 콘텐츠를 추가하는 대신 내 콘텐츠를 대체합니다.

  29. 29

    AJAX를 사용하여 DIV 콘텐츠 추가-이전 / 다음

뜨겁다태그

보관