
Welcome to this course! Let me introduce myself and give you a first overview of the course content!
What is Ionic? That's an important question and in this lecture, I'll explain in detail what Ionic is all about and why it's amazing!
Learning alone is absolutely fine but finding learning partners might be a nice thing, too. Our learning community is a great place to learn and grow together - of course it's 100% free and optional!
Let's take a closer look at all the pieces that actually make up Ionic and let's see how it all works together.
This course is about Ionic + Angular, so let's also make sure we're all on the same page when it comes to Angular. What is that about?
Time to get started! Let's create our first Ionic app and see how it works!
Ionic is not that old but it already has an interesting history - time to explore it!
There was a major version change in Ionic: Between Ionic 3 and 4, the whole framework changed. Let's explore why and why we're now in a way better future!
Ionic can be used to build cross-platform apps. You can build web apps and native mobile apps. In this lecture, we'll explore the latter.
There are alternatives to Ionic - this lectures gives you more resources on that.
We got a good idea of what Ionic is about, so let's now explore what exactly is in the course! Here's a detailed overview.
Your success matters to me! Here's how to get the most out of the course resources!
Discover how Angular builds fast, reactive single-page apps and, with Ionic, enables native mobile experiences by compiling TypeScript to JavaScript, bundling into index.html, and re-rendering the UI instantly.
Explore how Angular uses components to compose user interfaces, including header, side nav, and list item components, enabling reuse and single-definition logic through component-driven development.
Install the angular CLI via npm, set up NodeJS and npm, and create a new angular project with ng new for a streamlined, single-page application workflow.
Explore the Angular folder structure, focusing on main.ts and app.module.ts, with @NgModule, declarations, imports, and bootstrap to initialize the root component in the browser.
Learn how the app component uses the component decorator, selector, and template to bootstrap a root Angular component. See how Angular renders the template, DOM, and component-scoped styles via styleUrls.
Create a new Angular component named persons, decorate it with @Component, use selector app-persons, and template at ./persons.component.html; declare it in the app module and render via app-persons in app.component.html.
Render a dynamic list in an Angular template by using property binding to receive data and ngFor with string interpolation to output each item as a list entry.
Create a person-input component in Angular to handle user input, register it in the app module, and render a text input with a label and create button.
Learn to register a click event in Angular with event binding, calling a component method like onCreateUser and hooking the handler to access user input.
Use Angular local references to grab an input's value by declaring a template reference variable, pass its value to a handler, and output created a person with the entered name.
Explore how two-way binding with ngModel enables bidirectional data flow between input fields and component properties in Angular, activated by the FormsModule, alongside property binding, event binding, and string interpolation.
Pass the entered name from the person input component to the app component using a custom output event and event emitter, emitting $event to update the parent array.
Create a persons service in Angular with @injectable and providedIn: root to enable dependency injection and hold and manage the persons data across components.
Learn how to use a service in an Angular component through dependency injection, wiring a person service in the constructor to supply the list of persons for rendering.
Navigate between components in an Ionic Angular app using the router link directive, binding paths as strings or with brackets, so page switches occur without reloads and state is preserved.
Remove a person by clicking, using a removePerson method and array filter with a dynamic condition in an Ionic Angular app, and understand view updates.
Learn how to push updates across an Angular app using an rxjs subject. Emphasizes that arrays are reference types, uses next and subscribe, and unsubscribes to prevent memory leaks.
Explore the Ionic suite of web components in Angular apps, learn to configure and compose beautiful interfaces, and build a tiny web app to demo components.
Explore core Ionic app building blocks, including UI components, navigation for single-page apps, theming and styling, and native features via Capacitor or Cordova, with the CLI for build and publishing.
Learn to use Ionic components as web components within HTML, configuring attributes and events to customize behavior. Understand how shadow DOM and CSS variables power these components, created withStencil.
Set up a non-angular ionic project using a simple HTML skeleton and CDN to load Ionic web components, then build a budget planner to add expenses and compute totals.
Explore the official Ionic docs to learn about over a hundred components, view ion-button examples, and review properties, attributes, and events as you start building a budget planner.
Create an expense form using Ionic inputs with ion-item, a floating label, and ion-inputs for expense reason (text) and expense amount (number), wrapped in ion-card-content, ion-card-header, and ion-card-title.
Explore the three core Ionic component categories—output, layout, and input—and learn how to use elements like ion-grid, ion-card, and ion-button to manage width and organize content across screens.
Learn how the ion-grid creates responsive layouts with rows and columns, using size attributes and offsets with breakpoints xs, sm, md, lg to adapt and center content.
Learn to use Ionic elements as normal HTML elements with vanilla JavaScript. Attach click listeners, read inputs, and validate data to display results.
Render a dynamic expenses list under an Ionic grid by creating ion-item elements with vanilla JavaScript and appending them to an ion-list, preparing for Angular to manage these components.
Use the grid with size-md 6 and offset-md 3 to align the expense list and total expenses. Apply CSS utility margins to the paragraph to finish the layout.
Explore Ionic with Angular by setting up an @ionic/angular app, integrating the Angular router and Ionic components, and using Ionic controllers to build native mobile apps with styling and theming.
Explain how Angular handles complex JavaScript logic, state management, DOM rendering, routing, and authentication guards, enabling fast, reactive Ionic apps built with components, directives, and services.
Discover how the @ionic/angular wrapper bridges Ionic web components to Angular, wrapping them into an Angular module for easy usage and controllers like alert and modal.
Add a new recipes page in an Ionic Angular app by generating a lazy-loaded page and wiring it to the router. Use ion-router-outlet to ensure page transitions and header layout.
Create a recipe list using Ionic components in Angular, define a recipe interface with id, title, imageUrl, and ingredients, and render items with ngFor using ion-list, ion-item, ion-avatar, and ion-img.
Set up Angular routes with lazy loading for a recipe detail page and handle dynamic segments. Use a shared Angular service to manage global recipe state across pages.
Extract the dynamic recipeId from the route with activated route and paramMap, subscribe to the param map observable, and load the recipe via the recipes service for display.
Delete a recipe in an Ionic Angular app by adding a trash icon button, implementing delete in the recipe service, and navigating back to the recipes list.
Inject the alert controller from @ionic/angular to create and present a confirmation alert for deleting a recipe. Configure header, message, and buttons, and handle cancel and delete actions with navigation.
Explore how Angular components and Ionic components work together in a single project, with wrappers from @ionic/angular, inputs, and proper module declarations for reusable recipe item components.
Create an android app with ionic capacitor by configuring android studio and sdk, building with ng build, copy android, and wrap the web app into a native android app.
Create an iOS app with ionic capacitor, configure Xcode and Apple dev account, build and run on an iOS device or simulator, and enable live reload for faster development.
Explore debugging workflows for Ionic and Angular projects, covering browser and native app scenarios to identify, diagnose, and fix errors.
Debug and fix a deleted item issue in an Ionic Angular app by using console logs, understanding ngOnInit, and learning how Ionic page caching requires subscribing to recipe changes.
Explore using Chrome developer tools to locate source maps, set breakpoints in webpack-based TypeScript files, inspect recipe data, and step through getAllRecipes in the service.
Explore debugging the UI and performance in Ionic apps with Chrome developer tools to inspect the dom, styles, events, network requests, and memory usage.
Explore page switching in Ionic Angular apps using the Angular router, nav controller, tabs, side drawers, and modal overlays, and review guards for authentication.
Learn how routing works in an Ionic Angular app with the Angular router and ion router outlet, managing a cached stack of pages, forward and back navigation, and smooth transitions.
Learn how Ionic caches pages and uses ionViewWillEnter, ionViewDidEnter, ionViewWillLeave, and ionViewDidLeave to manage visibility when navigating between pages; ngOnInit and ngOnDestroy may not run while a page remains cached.
Adjust routing configuration to create routes for auth, places, and bookings, defaulting to places, and set up a places module with a tab bar for find, discover, and offer pages.
Understand how Ionic tabs provide independent navigation stacks across tabs, preserving each tab's page history as you switch between tabbed pages, and learn how to implement tabs in your app.
Learn how to implement bottom tabs in an Ionic Angular app using ion-tabs, ion-tab-bar, and ion-tab-button, with Angular routing and lazy loading for discover and offers pages.
Set up a places data model and a places service in an Ionic app, then create dummy places and display them on a discover page.
Add forward navigation in an Ionic Angular app by turning place cards and list items into tappable links using a router link, dynamic segments, and a forward animation.
Master back navigation in Ionic with ion back button and defaultRef. Route using the Angular router or NavController for accurate back animations and stack-aware behavior.
Navigate from the offers page to a new offer page via a toolbar ion button with an add icon and a dynamic router link, plus a back button.
Extract the id of the loaded place from the dynamic route using the activated route, subscribe to route param changes, and load the place with the places service for editing.
Implement an Ionic side drawer with ion menu, add a hamburger icon across pages, set start or end with main, and include links like discover, bookings, and logout.
Add a dummy authentication flow with an auth service in Ionic, featuring login and logout methods, a private authenticated flag with a getter, and a guard for places and bookings.
Explore navigation, routing, tabs, and forward/back navigation in Ionic and Angular, learn to use modals and side drawers, and pass data while styling for all devices.
Master Ionic components, attributes and slots, learn grid layouts with ion-grid, and implement ion-list, ion-item, ion-label, and virtual scrolling, plus controller components.
Explore how attributes and slots drive Ionic components, including how start, end, and default slots position content in ion-item and how attributes map to properties.
Learn how to control grid alignment in Ionic by managing row height, vertical alignment with align-items, and horizontal positioning with justify-content across responsive layouts.
Compare ion-list and ion-grid for structuring content; ion-list focuses on vertical lists of ion-items, while ion-grid enables complex row and column layouts.
Explore how ion-item, ion-label, ion-input, and ion-thumbnail create floating labels and underlined inputs inside or outside ion-list, with grid-based width control.
learn when to style text in Ionic apps using ion-text for color customization with options like primary or danger, versus ion-label for multiple text nodes in ion-item.
Create a swipeable bookings UI by defining a booking model and service, preloading dummy bookings, and rendering them in a responsive ion-item-sliding list with delete options.
Explore virtual scrolling in Ionic to render only visible items within a viewport, reuse off-screen items, and boost performance for long or unpredictably sized lists on mobile and web.
Show how to use the Ionic ion segment to switch between all and bookable places on the discover page, using value binding and the ion change event to update filters.
Inject the loading controller from @ionic/angular in the auth page, create a loading overlay with a spinner and 'logging in', then present and dismiss after a timeout to block interaction.
Explore how Ionic apps style and theme themselves with css variables, a global theme of base colors and sizes, the grid and component attributes, and customization via css or Sass.
Set global theme variables in Ionic by editing variables.scss and using CSS variables to customize colors, padding, and fonts.
Use the official color generator in Ionic to produce contrast, shade, and tint variables from main, secondary, and tertiary colors. Copy the results and replace the root element.
Apply global and component styling in Ionic using the ion-toolbar color property and CSS variables, then use the var() function to align background and text colors with a contrast theme.
Discover how to use component-specific css variables in ionic, apply selectors like ion-button, and scope styles with variables.scss to customize colors, shadows, and text across apps.
Explore user input requirements for an Ionic app, including authentication with email and password, sign-up/login toggle, booking date ranges, and a new offer form using template-driven and reactive forms.
Create an Ionic authentication form with email and password inputs in ion-items, using floating labels for validation, and add toggle buttons to switch between sign-up and sign-in in a grid.
Learn to implement a template-driven form in Angular with Ionic by wrapping inputs in a form, using ngModel and ngForm, and validating with required, email, and minlength.
Implement Ionic form validation with real-time feedback by using ion-invalid and ion-touched to color the ion-label and show error messages, and disable the login button until the form is valid.
Bind a button to an onSwitchAuthMode method to toggle between login and sign-up in an Ionic Angular app, using an isLogin state reflected in the button and ion-title.
Set up a new offer form with ion-grid, adding title, description, and price inputs in a responsive layout with floating labels, autocomplete, and a text area for description.
Add the ion-datetime date picker inside an ion-row and ion-item, bind min and max dates in ISO format, and wire an onCreateOffer button to log the offer creation.
Implement reactive form validation for a new offer form, display description errors when invalid or over 180 characters, and disable the submit button until the entire form is valid.
Edit the offer page with a reactive form in an Ionic Angular app, initializing a form for title and description using HTML markup and TypeScript logic, before updating data later.
Enable reactive form editing for offers by creating a form group with title and description prefilled from the place, using @angular/forms, and wiring onUpdateOffer to validate and capture edits.
Learn to implement a dual ion-datetime date picker in Ionic, with display and picker formats, min/max date bindings, dynamic constraints from the selected place, and form submission.
Join this bestselling course to learn how to use Angular and web development technologies to build real native mobile apps for iOS and Android!
Ionic is one of the most exciting technologies you can learn at the moment - it enables you to use one codebase (written in HTML, JS and CSS) to build and ship apps as normal (progressive) web apps as well as real native mobile apps for iOS and Android. This course teaches you the latest version of Ionic from scratch with no prior knowledge about it assumed.
Angular (formerly Angular 2) allows you to create awesome web applications powered by TypeScript / JavaScript. Wouldn't it be great to use that Angular knowledge to build web applications that can be compiled into native mobile apps, running on any iOS or Android device? And also publish them as progressive web apps at the same time.
The Ionic framework allows you to do just that! Use your existing Angular, HTML, JS and CSS knowledge and build your native mobile app with that! Ionic offers a lot of beautiful components (which you'll learn about in this course) that can be used to compose native-like user interfaces.
Capacitor (another tool provided by the Ionic team) will handle the rest as it's used to then build a native mobile app for iOS/ Android based on your code. This allows you to focus on the things you know and release your application on all possible devices (desktop and mobile) without having to learn thousands of different languages! Indeed, with Ionic, you can use one codebase to ship three different apps (iOS, Android, web).
No wonder that hybrid frameworks like Ionic are extremely popular and in high demand!
My name is Maximilian Schwarzmüller and I'm a freelance web developer as well as creator of many 5-star rated courses here on Udemy - including my "Angular - The Complete Guide" course, the bestselling Angular course on Udemy!
I love creating awesome web applications and it simply is amazing to now use that knowledge and build native mobile apps with it, too!
This course takes your from zero to published app, taking a very practice-orientated route. You'll a realistic app (where users can create and book events) throughout the course, learning about the basics of Ionic, its rich component library, how to fetch and handle user input, how to store data and access native device features and much more!
You'll dive into all important Ionic components as well as concepts like navigation (tabs, sidemenus), user input, native device features (e.g. camera), storage, http, authentication!
And since building apps is only part of the fun, you'll of course also learn how to run your apps either in the browser, on an emulator or on your own device!
What exactly are you going to learn then?
A brief refresher on Angular
How to set up your Ionic projects
The basics about Ionic - How navigation works, how your project is structured and you use its rich component library
How to use the many beautiful components Ionic ships with
How to use different kinds of navigation concepts: "Back"-Button-Navigation, tabs and sidemenus
How to show modals, alerts, toasts and many, many more useful UI components
How to test the app in the browser, on emulators or real devices
How to fetch and handle user input through inputs, textfields, dropdowns, dialogs etc.
How to authenticate users and access web servers to store + load data
How to access the local device storage and native device features like the camera or geolocation
So much more!
Finally, you'll learn how to configure your app and publish it to the App Store or Google Play Store (or as a progressive web app)
Does this sound great?
I can't wait to welcome you in this course!