1. First make sure Angular CLI has been installed
npm install -g @angular/cli
2. Create a new Angular project, in our example here is called angular-amplify-frontend
ng new angular-amplify-frontend
3. Add AWS Amplify to the project and the UI module for Angular
npm install aws-amplify npm install --save aws-amplify @aws-amplify/ui-angular
4. Then install Amplify CLI
npm install -g @aws-amplify/cli
5. Initialise a new Amplify project.
amplify initMake sure that the AWS user account set has AdministratorAccess-Amplify permission. Otherwise, you will get this error "AccessDeniedException: User:... is not authorized to perform: amplify:CreateApp on resource".
6. Now we can add the authentication module
amplify add auth
7. Then run
amplify push
8. Add the following to src/polyfills.ts file to avoid error when rendering in browser:
(window as any).global = window;
(window as any).process = {
env: { DEBUG: undefined },
};
9. Import Amplify and AmplifyAuthenticatorModule modules and configuration from 'aws-exports' on app.module.ts file.
. . .
import Amplify from 'aws-amplify';
import { AmplifyAuthenticatorModule } from '@aws-amplify/ui-angular';
import awsconfig from 'src/aws-exports'
Amplify.configure(awsconfig);
@NgModule({
declarations: [
AppComponent
],
imports: [
. . .
AmplifyAuthenticatorModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
To avoid this TypeScript error "Could not find a declaration file for module './aws-exports'. 'aws-exports.js' implicitly has an 'any' type.", create a aws-exports.d.ts file on the same level as aws-exports.js file with the following content:
declare const awsmobile: Record<string, any> export default awsmobile;
10. Import authenticator stylesheet on the styles file
@import '~@aws-amplify/ui-angular/theme.css';
11. Finally put the following on app.component.html file
<amplify-authenticator>
<ng-template amplifySlot="authenticated"
let-user="user"
let-signOut="signOut">
<h1>Welcome {{ user.username }}!</h1>
<button (click)="signOut()">Sign Out</button>
</ng-template>
</amplify-authenticator>
Then run the project
ng serve --o
If you got an error “bundle initial exceeded maximum budget”.
Open angular.json file on the project's root then find ‘budgets’ keyword. Then change the values for ‘maximumWarning’ and ‘maximumError’.
"budgets": [
{
. . .
"maximumWarning": "2mb",
"maximumError": "5mb"
}
]

No comments:
Post a Comment