You have two options.
Create separate mywebsite.api and a mywebsite.app projects in your solution.
- Proper separation of concerns.
- You can deploy updates to your api and your front end independently.
- Architecture of sites can be changed independently (i.e. you can update your api to run on asp.net 5 without affecting the website)
Create a single project with both the client app and api in one project
- Easier to deploy updates
- No need to configure to work with CORS
How to host and develop the application locally.
An effective solution for development is to use lite-server to run your client (Angular 2) application and IIS / Casini to host your web api code. A good example of how to use it is given in the Angular 2 quickstart tutorial (linked to below). My development process is to run the api through Visual Studio and work with client site coding using Visual Studio Code and lite-server (Atom is another good choice).
From the lite-server docs.
There is no issue in using Nuget / NPM both in the same solution and this should not inform your choice of project structure.
I only use the single project approach for demo / proof of concept applications. For production releases, I will always separate my concerns properly and have a dedicated api project.