본문 바로가기
블로그 이미지

방문해 주셔서 감사합니다! 항상 행복하세요!

  
   - 문의사항은 메일 또는 댓글로 언제든 연락주세요.
   - "해줘","답 내놔" 같은 질문은 답변드리지 않습니다.
   - 메일주소 : lts06069@naver.com


앵귤러, 리엑트, 뷰/앵귤러(Angular)

Angular F5 404, Angular Refresh 404(앵귤러 새로고침 404, 앵귤러 F5 404 )

야근없는 행복한 삶을 위해 ~
by 마샤와 곰 2019. 9. 17.

 

 

앵귤러를 개발하다보면 F5키나 새로고침 키를 눌러서 404 오류가 나는 경우가 존재한다.

앵귤러에(2.0 이상)서는 페이지를 한번에 전부 로드하고 사용자에게 보여주는 방식이므로 새로고침을 누를경우 해당 동작중인 서버로 url을 호출하기 때문이다.

즉, 가상의 주소를 매핑해놨는데....새로고침 하면 실제 주소로 이동하기 때문이다.

 

이를 방지하기 위해서는 라우팅을 관리하는 모듈에서 아주 간단한 세팅만 해 주면 된다.

아래 라우팅과 관련된 샘플 모듈 코드를 보면,

import { RouterModule,Routes} from '@angular/router'; //라우터

//.. 생략

const router : Routes = [  //통상적인 라우팅 객체 모습
  {path : '' , component : 컴포넌트1},  
  {path: '**',redirectTo: ''} ,
  {path : 'user' , component : 컴포넌트2}....
]

//..생략

@NgModule({
  //생략..
  
  imports: [
    RouterModule.forRoot(router,{enableTracing:false, useHash: true}),  //라우팅과 옵션
    //생략..
  ],  
  
  //생략..
});
export class AppModule { }

 

라우팅 옵션에 보면 useHash라는 부분이 true로 된 것을 볼 수 있다.

해당 옵션을 설정하면 다음과 같은 모습의 주소로 앱이 동작됨을 볼 수 있다.

# 기호가 생겼다.
user라는 경로로 이동했는데 마찬가지로 #기호가 있다.

 

해당 # 기호가 붙으면서 새로고침을 아무리 눌러도 404페이지로 이동하지 않음을 알 수 있다.

아래 useHash를 꼭 기억하자.

RouterModule.forRoot(라우팅내용,{useHash: true})

 

만약 #기호가 뵈기 싫으면 다른 옵션을 주어도 된다.

RouterModule.forRoot(router,{enableTracing:false, onSameUrlNavigation: 'reload'}),

해당 옵션을 주게 되면 그냥 새로고침해도 기존 주소 그대로 위치하게 된다.

 

물론 앵귤러 2.0 이상 버전에서만 사용 가능한 내용이다.

 

 

반응형
* 위 에니메이션은 Html의 캔버스(canvas)기반으로 동작하는 기능 입니다. Html 캔버스 튜토리얼 도 한번 살펴보세요~ :)
* 직접 만든 Html 캔버스 애니메이션 도 한번 살펴보세요~ :)

댓글