Deaktivieren Sie einen link in eckige 2+
Ich bin versucht zu deaktivieren Sie einen link, bis ein API-Aufruf in Eckige 6. Ich will den link deaktiviert werden, bis die getSelectedDealer () - API zurückgegeben wird.
<menu-link *ngIf="perms.has(perms.TOP_OFFERS) && _dealerPersistenceService.getSelectedDealer()"
route="/dynamic-journeys/{{getDealerId()}}/vehicles">
<menu-item><img src="/assets/menu-icons/top-offers.svg">Dynamic Journeys</menu-item>
</menu-link>
Hier ist der code für 'a' - tag-Komponente und die CSS.
<a [routerLink]="route" routerLinkActive="active" class="menu-link" [class.disabled]="disabled ? true: null">
<ng-content select="menu-item"></ng-content>
a.disabled {
pointer-events: none;
cursor: default;
}
Im Prinzip brauche ich den "menu-link" - Elemente deaktiviert werden, die vor API-Aufruf und aktiviert werden, nach.
<a [routerLink]="route" routerLinkActive="active" class="menu-link" [disabled]="apiReturned ? true : false " >
. MitapiReturned
als Komponente Eigenschaft??- Setzen Sie einfach die
disabled
Flagge zutrue
standardmäßig. Und es zurücksetzen, um den Wert, den Sie wollen bei der Rückgabe desAPI
nennen. - Deaktiviert die Eigenschaft existiert nicht auf 'a' - tag standardmäßig. Setze ich den toggle-flag für Behinderte auf die zugrunde liegenden 'a' - tag oder in der Menü-link?
- Sorry, wusste nicht, es war ein Anker, obwohl ich habe eine Antwort, warum dein Ansatz nicht funktioniert??
- Im Grunde bin ich nur versucht habe den link deaktiviert, bis der _dealerPersistenceService.getSelectedDealer() zurückgegeben wird. Diese Methode ist in den Menü-link-Komponente und nicht in der zugrunde liegenden 'a' - tag. Kann ich überprüfen, ob diese Methode aufgerufen wurde, und kehrte in der zugrunde liegenden 'a' - Tags oder lege ich es in den Menü-link?
- Die Komponente, in der Sie Ihre
anchor
- tag befindet, können sagenanchorTag
Komponente, esanchorTag
Komponente eine untergeordnete Komponente vonmenu-link
Komponente? - Wie Sie sehen können, die 'a' - tag mit der Klasse "menu-link', die den 'a' - tag. Die "menu-link" versteckt ist, es sei denn, die '_dealerPersistenceService.getSelectedDealer ()' - Methode zurückgegeben wurde. Anstatt uns zu verstecken "menu-link", bis die API zurückgegeben wird... ich will einfach die "menu-link" angezeigt, aber es muss deaktiviert werden.
- Diese sehen in eine Weile..
- Sorry für die späte Antwort, können Sie die editierte Antwort von mir..
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie möchten, zu verwenden, egal, was Sie erreichen könnten, indem Sie einfach hinzuzufügen, klicken Sie auf Ereignis, um diesen link mit sowas:
Im TS:
So isReady ist eine Boolesche variable der Komponente, und es ist falsch, bis Sie wollen. Wann immer Sie auf diesen link klicken, wird es prüfen, ob es wahr ist, aber wenn es falsch ist, es wird verhindert, dass das ursprüngliche Verhalten von der Veranstaltung, und nichts wird Feuer.
In der Komponente, haben eine fahne, die angibt, ob die API zurückgegeben hat..:
Haben und Ihre HTML wie:
Hier habe ich auch entfernt
href
von deranchor
wenn es soll deaktiviert werden.BEARBEITEN
Wenn Ihr anchor-tag befindet sich in einer anderen Komponente, dann haben Sie zwei Möglichkeiten, um die Aufgabe zu erfüllen.
mat-link
Komponente und entsprechend handelnmat-link
Komponente. Ich würde es vorziehen, mit einem service, da werden Sie auch zur Sperrung der Strecke von der URL-Leiste, wenn die API hat nicht zurückgegeben werden, mit Eingabe Sie können nur blockieren den link, aber das wird nicht helfen, wenn jemand direkt eingibt, die route, die url in die URL-Leiste. Sie können Eckig istRoute Guard
um zu verhindern, dass das routing in solchen FällenIch erkläre die Verwendung für die erste Möglichkeit und die zweite Möglichkeit für Sie zu implementieren.
In Ihrem
mat-link
Komponente.ts, die haben etwas wie:Und in Ihrem
mat-link.component.html
, so etwas wie:Konnten Sie feststellen, dass ich erstellt habe, zwei
anchor
- tags, die an Bedingungen geknüpft sind, ist dies, weil,routerlink
nicht akzeptierennull
und wir haben nicht so etwas wie bedingterouterLink
noch.In der übergeordneten Komponente, sagen
app.component.html
oder wo immer Sie sind mitmat-link.component
, so etwas wie:Können Sie Sehen, ein Beispiel hier: Beispiel. Die
Click Me!
link aktivieren, nach 10 Sekunden..App
componenet.. Also, wenn Ihr service ist wieder einObservable
können Sie etwas tun:_dealerPersistenceService.getSelectedDealer().subscribe((success)=>{// check success and then this.apiReturned = true })
getDealerId()
Eckige muss ein Weg, um selektiv gelten-Richtlinien, aber hier war meine Lösung: