While I love protractor as any easy functional testing stack for angular-front-end sites I'm not sure I'd point at the tools you're using first.
1) Verify it shows up somewhere on the page and that you can find it with your locator.
2) If it's not on the page immediately, add a wait condition for the element to be visible, etc. in your script. If it's on the page but out of view check #3. If it continues to fail with a wait condition you can try a wait for a specific amount of time instead of a condition (driver.sleep(integer)
in JS)
3) If it's on the page but not in the visible portion (viewport) it may be there but need to be brought into view before it can be interacted with normally. Sometimes you can bring this element into view by clicking it twice, giving the element sendKeys('')
with an empty string, etc. If that fails you may need to inject javascript into the browser to do your scrolling for your (ex driver.executeScript('some javascript code');