Comment soumettre le formulaire au serveur en Angular2?
Maintenant la présentation a été pris par angular2 même avec action= en <form>.
le lien de démonstration: http://plnkr.co/edit/4wpTwN0iCPeublhNumT5?p=preview
//our root app component
import {Component} from 'angular2/core'
@Component({
selector: 'my-app',
providers: [],
template: `
<div>
<h2>Hello {{name}}</h2>
<form action="https://www.google.com" target="_blank" method="POST">
<input name="q" value="test">
<button type="submit">Search</button>
</form>
</div>
`,
directives: []
})
export class App {
constructor() {
this.name = 'Angular2'
}
}
- L'affichage d'un formulaire directement provoque un rechargement de la page, ce n'est généralement pas ce que vous voulez dans Angulaire de l'application (SPA). Saisir les données de formulaire et d'envoyer une requête HTTP à partir de votre code sur le serveur à la place.
- Avec
target="_blank"
le poste devrait être devrions-nous vers une nouvelle page. Et l'action point à un autre domaine, de sorte xhr n'est pas une option. - Je vois. Vous avez raison.
Vous devez vous connecter pour publier un commentaire.
Vous devriez tirer parti de la
NgSubmit
directive, comme décrit ci-dessous:Dans ce cas, lorsque vous cliquez sur le bouton envoyer, le
onSubmit
méthode de la composante sera appelée, et vous serez en mesure d'envoyer manuellement des données au serveur en utilisant leHTTP
classe sur Angular2:De cette façon, vous pouvez rester dans la même page.
Modifier
À la suite de votre commentaire, vous devez désactiver le comportement de la
NgForm
directive qui attrape lesubmit
événement et l'empêche d'être propagées. Voir cette ligne: https://github.com/angular/angular/blob/master/modules/%40angular/forms/src/directives/ng_form.ts#L141.Pour le faire il suffit d'ajouter le
ngNoForm
attribut à votre formulaire:Dans ce cas, une nouvelle fenêtre sera ouverte pour votre formulaire de soumission.
Espère que cela vous aide,
Thierry
ngNoForm
attribut pour votre formulaire. J'ai mis à jour ma réponse 😉ngNoForm
, ce qu'une interface intuitive et logique d'annotation à ajouter. Mais cela vient de résoudre un problème que j'ai cogné la tête en essayant de se déplacer pour une semaine.Essayez ceci:
http://plnkr.co/edit/Qjh8ooPpkfVgEe0dIv4q?p=preview
Hey, si quelqu'un l'a jamais certains ennuyeux problème dans Firefox lors de la publication d'une forme à une nouvelle url provoque un rafraichissement de la page et de ne pas suivre à travers de la page, ajouter
target="_parent"
et résoudre le problème.Vous pouvez également soumettre le formulaire de cette façon.
Voici le balisage HTML.
<form (ngSubmit)="onSubmit($event)" #f="ngForm">
(...)
<input type="text" [(ngModel)]="data.name"/>
(...)
<button type="submit">Send</button>
</form>
Et voici le code dans votre .fichier ts.
onSubmit(e) {
e.target.submit();
}