Je souhaite créer une URL de manière dynamique en cliquant sur le lien dans un commentaire. Existe-t-il une méthode pour y parvenir?
testez le code sur stackblitz.com
import { Component } from '@angular/core';
@Component({
selector: 'my-app',
template: `<div [innerHTML]="Text"></div>`,
})
export class AppComponent {
DokumentID: 5
Text = `The attached document can be found on this link.
<br><br>
<a [href]="DokumentOpen(DokumentID)" target="_blank">test.pdf</a>.
`
DokumentOpen(DokumentID: number): string{
return "docs/load?"+DokumentID
}
}
3 Réponses :
vous pouvez créer comme ci-dessous:
<a href="{{downloadURL}}/File/{{fileName}}" id="upload" download="{{fileName}}" target="_self" role="link" class="btn btn-link" >
{{ fileName }}
</a>
downloadURL = '';
this.downloadURL = environment.apiURL;
// you can hardcode or take from the enviornment.
cette technique fonctionne dans le modèle. Mais cela ne fonctionne pas pour le lien dans le texte. stackblitz.com/edit/angular-dvqupq
Utilisez des espaces réservés. Aussi, formatez correctement la chaîne de requête.
return `docs/load?id=${DokumentID}`;
Notez les contre-indications.
Cela peut également être fait dans la méthode de service en utilisant HttpParams .
J'ai appliqué votre suggestion. Malheureusement non. Code de test: stackblitz.com/edit/angular-7mlrux
Vous liez innerHtml, vous y mettez du texte et vous vous attendez à ce qu'Angular le traite comme des directives Angular. Pourquoi cette complexité?
Pourquoi ne pas faire cela?
import { Component } from '@angular/core';
@Component({
selector: 'my-app',
template: `<div>`The attached document can be found on this link.
<br><br>
<a routerLink="docs/load?{DocumentID}" target="_blank">test.pdf</a></div>`,
})
export class AppComponent {
DocumentID: 5
}
}
Au début, il était facile de mettre un lien dans le commentaire. Après l'idée de crypter de manière dynamique les numéros de document utilisés dans le lien, il devient plus compliqué. Si je ne trouve pas la solution, je vais faire comme vous le dites.
Donner. E plus de contexte sur ce que vous essayez exactement de réaliser et je pourrais peut-être vous donner une meilleure solution.
Autant que je sache, l'utilisation du lien dynamique dans le texte n'est pas facile. Est-il possible d'utiliser routerLink dans le texte comme alternative?
Utiliser du texte «dymanique» comme vous l'avez appelé est compliqué dans les directives basées sur Angular car Angular protège le texte de liaison aux directives en se débarrassant de tout HTML. L'utilisation de routerLink dans le texte que vous liez ensuite aura la même limitation.
Salut Richards, Merci pour votre intérêt. J'ai une table de commentaires dans la base de données. La table de commentaires a un champ de texte moyen pour le commentaire de l'utilisateur. L'utilisateur peut ajouter un lien de document (généralement pdf) lié à la table de document. J'utilise [innerHTML] en div pour afficher ces commentaires sur la page associée. Lorsque l'utilisateur clique sur un lien de document dans un commentaire, ı affichez ces documents dans un autre onglet du navigateur. Ce système fonctionne bien maintenant. Mais je veux changer l'identifiant du document dans le lien avant d'ouvrir le lien pour des raisons de sécurité.
Comme je suppose. Je pense que je dois ajouter un identifiant de document au tableau des commentaires. Ensuite, je produis le texte du modèle angulaire rendu dans la page.
Vous pouvez prendre le texte du tableau des commentaires et utiliser des expressions régulières pour extraire l'ID du document ou le lien complet, puis en faire ce que vous voulez.
pouvez-vous mettre votre texte directement sur le modèle? Vous pouvez également souhaiter avoir un gestionnaire d'événements de clic au lieu d'utiliser l'attribut href sur votre lien. Ensuite, vous pouvez utiliser l'API du routeur pour réaliser la redirection. (Ou window.open si une nouvelle fenêtre)
Copie possible de Liaison HTML angulaire
Ce n'est pas une copie de la liaison HTML angulaire. Avant d'écrire ma question, j'ai examiné toutes les questions connexes, y compris celle-ci. Il y a un vrai double de ma question. stackoverflow.com/questions/51640982/... Mais il n'a pas de réponse acceptée et correcte.
ces textes, y compris href produit par l'utilisateur sous forme de commentaire. Le href dans ce texte fait référence au lien de document produit et contrôlé par le même service. Il est facile d'utiliser le lick statique dans le texte car le document ci-joint se trouve sur ce lien test.pdf . L'identifiant du document produit par le service est le numéro de commande. Il est donc facile de manipuler le système. C'est pourquoi je souhaite modifier le lien dans le texte de manière dynamique avant d'ouvrir le document dans parcourir.