Angular 2의 패시브 링크 - 등가
Angular 1.x에서 기본적으로 아무 것도 하지 않는 링크를 만들기 위해 다음을 수행할 수 있습니다.
<a href="">My Link</a>
그러나 동일한 태그가 Angular 2의 앱 베이스로 이동합니다.Angular 2에서 그것과 동등한 것은 무엇입니까?
편집: Angular 2 Router의 버그처럼 보이고 이제 github에서 그것에 대한 미해결 문제가 있습니다.
저는 즉시 해결책을 찾거나 없을 것이라는 확인서를 찾고 있습니다.
Angular 5 이상인 경우 변경하기만 하면 됩니다.
<a href="" (click)="passTheSalt()">Click me</a>
안으로
<a [routerLink]="" (click)="passTheSalt()">Click me</a>
링크 위에 마우스를 올려놓고 클릭하면 경로가 트리거되지 않는 손 아이콘이 표시됩니다.
참고: 쿼리 매개 변수를 유지하려면 다음을 설정해야 합니다.queryParamsHandling
에 대한 선택권.preserve
:
<a [routerLink]=""
queryParamsHandling="preserve"
(click)="passTheSalt()">Click me</a>
그것도 마찬가지일 것입니다, 그것은 관련이 없습니다.angular2
이것은 간단한 html 태그입니다.
으로 기적으로.a
(앵커) 태그는 HTML 파서에 의해 렌더링됩니다.
편집
사용하지 않도록 설정할 수 있습니다.href
을 가짐으로써javascript:void(0)
아무 일도 일어나지 않도록. (하지만 해킹은.)저는 Angular 1이 이 기능을 즉시 제공했다는 것을 알고 있지만 지금은 정확하지 않습니다.
<a href="javascript:void(0)" >Test</a>
다른방로는으법,,는,routerLink
지가는지로 합니다.""
이 생기는 값href=""
<a routerLink="" (click)="passTheSalt()">Click me</a>
angular2로 하는 방법도 있지만, 저는 이것이 버그라는 것에 강하게 동의하지 않습니다.angular1에 대해 잘 모르지만, 당신이 주장하는 것처럼 어떤 경우에는 유용하지만, 분명히 이것이 어떤 프레임워크의 기본 동작이 되어서는 안 됩니다.
의견 불일치는 차치하고 모든 링크를 파악하고 확인할 수 있는 간단한 지침을 작성할 수 있습니다.href
과 그이면 0을 preventDefault()
여기 작은 예가 있습니다.
@Directive({
selector : '[href]',
host : {
'(click)' : 'preventDefault($event)'
}
})
class MyInhertLink {
@Input() href;
preventDefault(event) {
if(this.href.length == 0) event.preventDefault();
}
}
PLATFORM_DIRECTIVES에 이 지침을 추가하면 애플리케이션 전체에서 작동할 수 있습니다.
bootstrap(App, [provide(PLATFORM_DIRECTIVES, {useValue: MyInhertLink, multi: true})]);
여기 plnkr이 작동하는 예제가 있습니다.
합창단은 무언가를 찾아가야 하기 때문에, 저는 그것이 길을 갈 때의 행동이 옳다고 생각합니다.페이지에서 무언가를 전환하는 데 필요한 경우 버튼에 가깝습니까?부트스트랩을 사용하기 때문에 다음을 사용할 수 있습니다.
<button type="button" class="btn btn-link" (click)="doSomething()">My Link</button>
이 해결 방법을 CSS와 함께 사용하고 있습니다.
/*** Angular 2 link without href ***/
a:not([href]){
cursor: pointer;
-webkit-user-select: none;
-moz-user-select: none;
user-select: none
}
html
<a [routerLink]="/">My link</a>
이것이 도움이 되길 바랍니다.
<a href="#" (click)="foo(); false">
<a href="" (click)="false">
다음은 몇 가지 방법입니다.
<a href="" (click)="false">Click Me</a>
<a style="cursor: pointer;">Click Me</a>
<a href="javascript:void(0)">Click Me</a>
기본 브라우저 동작을 차단했습니다.그러나 이를 달성하기 위해 지침을 작성할 필요는 없습니다.
다음과 같은 예로 쉽게 사용할 수 있습니다.
my.component.component.cisco
<a href="" (click)="goToPage(pageIndex, $event)">Link</a>
my.component.ts
goToPage(pageIndex, event) {
event.preventDefault();
console.log(pageIndex);
}
나는 더미 앵커 태그에 대한 4가지 해결책을 가지고 있습니다.
1. <a style="cursor: pointer;"></a>
2. <a href="javascript:void(0)" ></a>
3. <a href="current_screen_path"></a>
4. 부트스트랩을 사용하는 경우:
<button class="btn btn-link p-0" type="button" style="cursor: pointer"(click)="doSomething()">MY Link</button>
여기 간단한 방법이 있습니다.
<div (click)="$event.preventDefault()">
<a href="#"></a>
</div>
부글부글 끓고 있는 사건을 포착하여 격추시킵니다.
Angular 5에 대해 업데이트됨
import { Directive, HostListener, Input } from '@angular/core';
@Directive({
// tslint:disable-next-line:directive-selector
selector : '[href]'
})
export class HrefDirective {
@Input() public href: string | undefined;
@HostListener('click', ['$event']) public onClick(event: Event): void {
if (!this.href || this.href === '#' || (this.href && this.href.length === 0)) {
event.preventDefault();
}
}
}
사람들이 사용을 제안하는 이유를 잘 모르겠습니다.routerLink=""
Angular 11에서 저는 내비게이션을 작동시킵니다.이것이 제게 맞는 일입니다.
<div class="alert">No data yet, ready to <a href="#" (click)="create();$event.preventDefault()">create</a>?</div>
나의 경우 href 속성을 삭제하면 a에 click 함수가 할당되는 한 문제가 해결됩니다.
정말 간단한 해결책은 A 태그를 사용하지 않고 대신 스팬을 사용하는 것입니다.
<span class='link' (click)="doSomething()">Click here</span>
span.link {
color: blue;
cursor: pointer;
text-decoration: underline;
}
다음과 같이 이벤트의 기본 동작을 방지해야 합니다.
HTML에서
<a href="" (click)="view($event)">view</a>
ints 파일
view(event:Event){
event.preventDefault();
//remaining code goes here..
}
왜 아무도 routerLink와 routerLinkActive(Angular 7)를 제안하지 않는지 궁금합니다.
<a [routerLink]="[ '/resources' ]" routerLinkActive="currentUrl!='/resources'">
저는 href를 제거했고 지금은 이것을 사용합니다.href를 사용할 때 기본 URL로 이동하거나 동일한 경로를 다시 로드하는 중이었습니다.
Angular2 RC4에 대해 업데이트됨:
import {HostListener, Directive, Input} from '@angular/core';
@Directive({
selector: '[href]'
})
export class PreventDefaultLinkDirective {
@Input() href;
@HostListener('click', ['$event']) onClick(event) {this.preventDefault(event);}
private preventDefault(event) {
if (this.href.length === 0 || this.href === '#') {
event.preventDefault();
}
}
}
사용.
bootstrap(App, [provide(PLATFORM_DIRECTIVES, {useValue: PreventDefaultLinkDirective, multi: true})]);
언급URL : https://stackoverflow.com/questions/35639174/passive-link-in-angular-2-a-href-equivalent
'programing' 카테고리의 다른 글
기본적으로 Visual Studio를 관리자로 실행하려면 어떻게 해야 합니까? (0) | 2023.05.31 |
---|---|
java를 사용하여 mongoDB에 이미지를 삽입하는 방법은 무엇입니까? (0) | 2023.05.31 |
해시에 새 항목을 추가하는 방법 (0) | 2023.05.31 |
Esc 키를 누를 때 Excel 매크로 실행 중지 (0) | 2023.05.31 |
이클립스에서 닫힘 탭을 실행 취소하시겠습니까? (0) | 2023.05.31 |