มีวิธีการทำกับ 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_DIRECTIVE
bootstrap(App, [provide(PLATFORM_DIRECTIVES, {useValue: MyInhertLink, multi: true})]);
นี่คือplnkrพร้อมตัวอย่างที่ใช้งานได้