Een blog-app maken met Angular & MongoDB Inloggen

Angular is een one-stop-framework voor het maken van mobiele en web-apps met dezelfde herbruikbare code. Met Angular kunt u de hele applicatie opsplitsen in herbruikbare componenten, waardoor het eenvoudiger wordt om code te onderhouden en opnieuw te gebruiken.

In deze zelfstudiereeks leert u hoe u aan de slag kunt gaan met het maken van een webapp met Angular met MongoDB als back-end. U gebruikt Node.js voor het uitvoeren van de server.

In de loop van deze zelfstudie bouw je een blogtoepassing met Angular, Node.js en MongoDB. 

In deze zelfstudie ziet u hoe u aan de slag gaat met het instellen van de toepassing en het maken van de Log in bestanddeel.

Ermee beginnen

Laten we beginnen door het Hoekige CLI.

npm install -g @ angular / cli

Nadat u de Angular CLI hebt geïnstalleerd, maakt u een projectmap met de naam AngularBlogApp

mkdir AngularBlogApp cd AngularBlogApp

Maak vanuit de projectmap een nieuwe Angular-app met de volgende opdracht:

nieuwe klant

Zodra u de cliënt app gemaakt, navigeer naar de projectmap en installeer de vereiste afhankelijkheden met Node Package Manager (npm).

cd client npm installeren

Start de client-server met NPM.

npm start

De toepassing moet worden uitgevoerd op http: // localhost: 4200 /.

De applicatie instellen

Uw Angular web-app heeft een rootcomponent. Maak een map met de naam wortel binnen in de src / app map. Maak een bestand met de naam root.component.html en voeg de volgende HTML-code toe:

Rootcomponent

Voeg een bestand toe met de naam root.component.ts en voeg de volgende code toe:

Component importeren vanuit '@ angular / core'; @Component (selector: 'app-root', templateUrl: './root.component.html') exportklasse RootComponent  

Verwijder de bestanden app.component.html, app.component.ts, app.component.scss, en app.component.spec.ts. Je hebt maar één bestand met de naam app.module.ts binnen in de src / app map.

Importeer de RootComponent binnen in de app.module.ts het dossier.

importeer RootComponent van './root/root.component';

Omvat de RootComponent in de ngModules en bootstrap het.

@NgModule (aangiften: [RootComponent], import: [BrowserModule, FormsModule], providers: [], bootstrap: [RootComponent])

Sla de wijzigingen op en start de server opnieuw op. Je hebt de RootComponent wordt weergegeven wanneer de toepassing wordt geladen.

Je zult Angular gebruiken router voor routing in onze blogapp. Dus import-routeringsafhankelijke afhankelijkheden in een nieuw bestand genaamd app.routing.ts binnen in de src / app map.

import RouterModule, Routes vanuit '@ angular / router'; import ModuleWithProviders uit '@ angular / core / src / metadata / ng_module';

Definieer het routepad samen met de componenten zoals getoond:

export const AppRoutes: Routes = [path: ", component: LoginComponent];

Exporteer de routes om een ​​module te maken met alle routeproviders.

export const ROUTING: ModuleWithProviders = RouterModule.forRoot (AppRoutes);

Hier is hoe het app.routing.ts bestand ziet er:

import RouterModule, Routes vanuit '@ angular / router'; import ModuleWithProviders uit '@ angular / core / src / metadata / ng_module'; importeer LoginComponent van './login/login.component'; export const AppRoutes: Routes = [path: ", component: LoginComponent]; export const ROUTING: ModuleWithProviders = RouterModule.forRoot (AppRoutes);

Zoals te zien is in de bovenstaande code, hebt u nog niet het LoginComponent. Het is toegevoegd voor de duidelijkheid.

Importeer de ROUTING klasse in de app.module.ts het dossier. 

importeer ROUTING van './app.routing';

Neem het op in de NgModule invoer.

invoer: [BrowserModule, ROUTING, FormsModule]

Plaats RouterOutlet in de root.component.html pagina. Dit waar de component van de route wordt weergegeven.

Maak een map met de naam Log in binnen in de src / app map. Binnen in de Log in map, maak een bestand aan met de naam login.component.ts en voeg de volgende code toe:

Component importeren vanuit '@ angular / core'; @Component (selector: 'app-login', templateUrl: './login.component.html') export class LoginComponent constructor ()  

Maak een bestand met de naam login.component.html en voeg de volgende code toe:

Login Component

Sla de bovenstaande wijzigingen op en start de server opnieuw. Als de per routes gedefinieerd wanneer de toepassing de LoginComponent wordt weergegeven.

Het aanmeldingscomponent maken

Je hebt al de basis gelegd voor de LoginComponent tijdens het instellen van de applicatie. Laten we de weergave voor de maken LoginComponent gebruik makend van bootstrap.

Download en includeer de bootstrap CSS-stijl in de middelen map en neem de referentie op in de src / index.html pagina.

Plaats een wrapper rond de app-root in de index.html pagina.

Voeg de volgende HTML toe aan de login.component.html pagina.

Log in alstublieft

Maak een bestand met de naam login.component.css binnen in de Log in map en voeg de volgende CSS-stijl toe.

.form-signin max-width: 330px; opvulling: 15px; marge: 0 auto;  .form-signin .form-signin-heading, .form-signin .checkbox margin-bottom: 10px;  .form-signin .checkbox font-weight: 400;  .form-signin .form-control position: relative; box-sizing: border-box; hoogte: auto; opvulling: 10px; lettergrootte: 16px;  .form-signin .form-control: focus z-index: 2;  .form-signin input [type = "email"] margin-bottom: -1px; grens-onder-rechter-straal: 0; grens-onder-links radius: 0;  .form-signin input [type = "wachtwoord"] margin-bottom: 10px; grens-bovenkant-linker-straal: 0; grens-bovenkant-juiste-straal: 0; 

Wijzig de @Component decorateur om de CSS-stijl op te nemen.

@Component (selector: 'app-login', templateUrl: './login.component.html', styleUrls: ['./login.component.css'])

Sla de bovenstaande wijzigingen op en probeer de toepassing te laden. Je hebt de LoginComponent weergegeven met de loginweergave.

De inlogservice maken

LoginComponent zal moeten communiceren met de database om te zien of de ingelogde gebruiker geldig is of niet. Het moet dus API-aanroepen doen. U houdt het database-interactiegedeelte in een apart bestand met de naam login.service.ts.

Maak een bestand met de naam login.service.ts en voeg de volgende code toe:

Injectable importeren vanuit '@ angular / core'; importeer HttpClient van '@ angular / common / http'; @Injectable () exportklasse LoginService constructor (privé http: HttpClient)  validateLogin () 

Importeer de LoginService in de LoginComponent en voeg het toe als een provider in de component-decorateur. 

importeer LoginService van './login.service';
@Component (selector: 'app-login', templateUrl: './login.component.html', styleUrls: ['./login.component.css'], providers: [LoginService])

Voeg een methode toe genaamd validateLogin in de login.service.ts bestand dat de API-oproep doet. Hier is hoe het eruit ziet:

validateLogin (gebruiker: Gebruiker) retourneer this.http.post ('/ api / user / login', gebruikersnaam: user.username, wachtwoord: user.password)

Zoals te zien in de bovenstaande code, retourneert het een waarneembaar bericht dat wordt ingeschreven in de login.component.ts het dossier. Hier is hoe het login.service.ts bestand ziet er:

Injectable importeren vanuit '@ angular / core'; importeer HttpClient van '@ angular / common / http'; importeer Gebruiker van '... /models/user.model'; @Injectable () exportklasse LoginService constructor (privé http: HttpClient)  validateLogin (gebruiker: Gebruiker) retourneer dit.http.post ('/ api / user / login', gebruikersnaam: user.username, wachtwoord: gebruiker .password)

Validatie van gebruikersaanmelding implementeren

Voeg de toe ngModel richtlijn voor de invoerelementen in login.component.html.

  

Voeg een klikgebeurtenis toe aan de aanmeldknop.

Hier is hoe de gemodificeerde login.component.html ziet:

Log in alstublieft

Definieer en initialiseer de gebruikersvariabele in de login.component.ts het dossier.

openbare gebruiker: gebruiker; constructor (private loginService: LoginService) this.user = new User (); 

De Gebruiker model is gedefinieerd in de src / app / modellen map. Hier is hoe het eruit ziet:

exportklasse Gebruiker constructor () this.username = "; this.password =";  openbare gebruikersnaam; openbaar wachtwoord; 

Definieer een methode genaamd validateLogin die wordt aangeroepen door op de knop te klikken. Hier ziet u hoe de methode eruitziet:

validateLogin () if (this.user.username && this.user.password) this.loginService.validateLogin (this.user) .subscribe (result => console.log ('result is', result);, error => console.log ('error is', error););  else alert ('gebruikersnaam en wachtwoord invoeren'); 

Wanneer zowel de gebruikersnaam als het wachtwoord zijn ingevoerd, is de validateLogin methode onderschrijft de LoginService methode om de gebruikersaanmelding te valideren.

Hier is hoe het login.component.ts bestand ziet er:

Component importeren vanuit '@ angular / core'; importeer LoginService van './login.service'; importeer Gebruiker van '... /models/user.model'; @Component (selector: 'app-login', templateUrl: './login.component.html', styleUrls: ['./login.component.css'], providers: [LoginService]) exporteer class LoginComponent openbaar gebruiker: gebruiker; constructor (private loginService: LoginService) this.user = new User ();  validateLogin () if (this.user.username && this.user.password) this.loginService.validateLogin (this.user) .subscribe (result => console.log ('result is', result); , error => console.log ('error is', error););  else alert ('gebruikersnaam en wachtwoord invoeren');  

Inpakken

In dit deel van de oefenreeks van de Angular-blogging-app zag je hoe je kon beginnen met het maken van een web-app met Angular. U hebt de basisstructuur van de Angular-app gemaakt en de LoginComponent waarmee de gebruiker de gebruikersnaam en het wachtwoord kan valideren. 

In het volgende deel van de zelfstudiereeks schrijft u de REST API voor gebruikersaanmeldingvalidatie en maakt u de thuiscomponent.

Broncode van deze tutorial is beschikbaar op GitHub.

Laat ons uw mening en suggesties weten in de opmerkingen hieronder.