I have a tabs nav element that has two tabs, it needs to show a component based on what tab was clicked and hide the other component. If the clicked tab is already "active", the component needs to remain showing.

I have this working, but it seems very inefficient to me. Can anyone show me a better way to do this?

Here's how I have it set up now. For the sake of not posting every file in the question, know that the project is set up correctly.

Please notice that the code above is for illustrational purposes in your specific context.
Any more or less real project will use *ngFor directive to iterate over some data source to construct the boxes dynamically.
Something like the code below.
Do not worry if you don't understand it yet.
You'll get there later with a bit of practice.

Know your tool/language

In typeScript you can initialize class' properties inline (this is the same as setting the values in constructor).
You can also omit the type of the variable it is inferred.
Similarly, if your constructor does not do any work, it can be got rid of.